在悬停时变暗背景图像

Joh*_*ith 40 html css css3

如何在制作新的较暗图像的情况下在悬停时使背景图像变暗?

CSS:

.image {
  background: url('http://cdn1.iconfinder.com/data/icons/round-simple-social-icons/58/facebook.png');
  width: 58px;
  height: 58px;
}
Run Code Online (Sandbox Code Playgroud)

JSFiddle链接:http://jsfiddle.net/qrmqM/1/

Sab*_*jad 51

类似,但又有点不同.

使图像100%不透明,因此很清楚.然后在img悬停时将其降低到你想要的不透明度.在这个例子中,我还添加了缓动以实现良好的转换.

img {
    -webkit-filter: brightness(100%);
}

img:hover {
    -webkit-filter: brightness(70%);
    -webkit-transition: all 1s ease;
    -moz-transition: all 1s ease;
    -o-transition: all 1s ease;
    -ms-transition: all 1s ease;
    transition: all 1s ease;
}
Run Code Online (Sandbox Code Playgroud)

这样做,希望有所帮助.

谢谢Robert Byers为你的jsfiddle

  • 这是唯一适用于任何形状图像的答案.如果您的图像是矩形或圆形,则其他一些答案会有效.但这适用于任何形状.这个答案只是缺乏一个小提琴.这里:https://jsfiddle.net/cmL1tsjh/ (4认同)

PSL*_*PSL 38

怎么样,使用叠加?

.image:hover > .overlay {
    width:100%;
    height:100%;
    position:absolute;
    background-color:#000;
    opacity:0.5;
    border-radius:30px;
}
Run Code Online (Sandbox Code Playgroud)

演示


Mr.*_*ien 17

如果您想使图像变暗,请使用覆盖元素rgbaopacity属性,这会使图像变暗...

演示

<div><span></span></div>

div {
    background-image: url(http://im.tech2.in.com/gallery/2012/dec/stockimage_070930177527_640x360.jpg);
    height: 400px;
    width: 400px;
}

div span {
    display: block;
    height: 100%;
    width: 100%;
    opacity: 0;
    background: rgba(0,0,0,.5);
    -moz-transition: all 1s;
    -webkit-transition: all 1s;
    transition: all 1s;
}

div:hover span {
    opacity: 1;
}
Run Code Online (Sandbox Code Playgroud)

注意:我也使用CSS3过渡来获得平滑的暗效果


如果任何人在DOM中保存一个额外的元素比你可以使用:before:after伪也..

演示2

div {
    background-image: url(http://im.tech2.in.com/gallery/2012/dec/stockimage_070930177527_640x360.jpg);
    height: 400px;
    width: 400px;
}

div:after {
    content: "";
    display: block;
    height: 100%;
    width: 100%;
    opacity: 0;
    background: rgba(0,0,0,.5);
    -moz-transition: all 1s;
    -webkit-transition: all 1s;
    transition: all 1s;
}

div:hover:after {
    opacity: 1;
}
Run Code Online (Sandbox Code Playgroud)

在图像的暗色覆盖上使用一些内容

这里使用CSS定位技术z-index覆盖黑暗div元素上的内容. 演示3

div {
    background-image: url(http://im.tech2.in.com/gallery/2012/dec/stockimage_070930177527_640x360.jpg);
    height: 400px;
    width: 400px;
    position: relative;
}

div:after {
    content: "";
    display: block;
    height: 100%;
    width: 100%;
    opacity: 0;
    background: rgba(0,0,0,.5);
    -moz-transition: all 1s;
    -webkit-transition: all 1s;
    transition: all 1s;
    top: 0;
    left: 0;
    position: absolute;
}

div:hover:after {
    opacity: 1;
}

div p {
    color: #fff;
    z-index: 1;
    position: relative;
}
Run Code Online (Sandbox Code Playgroud)


Ror*_*ory 11

通过使用新的Filter CSS 选项,我能够比上述答案更容易地实现这一点,并且在一行代码中。

在现代浏览器中兼容性非常好 - 在撰写本文时为 95%,但低于其他答案。

img:hover{
  filter: brightness(50%);
}
Run Code Online (Sandbox Code Playgroud)
<img src='https://via.placeholder.com/300'>
Run Code Online (Sandbox Code Playgroud)

  • 过滤器选项很棒 (3认同)

Vuc*_*cko 7

您可以使用不透明度:

.image {
    background: url('http://cdn1.iconfinder.com/data/icons/round-simple-social-icons/58/facebook.png');
    width: 58px;
    height: 58px;
    opacity:0.5;
}

.image:hover{
    opacity:1;
}
Run Code Online (Sandbox Code Playgroud)

的jsfiddle

  • 如果我想保持原始的不透明度并使其在盘旋时变暗,该怎么办? (2认同)

Alo*_*man 7

你可以使用这个:

box-shadow: inset 0 0 0 1000px rgba(0,0,0,.2);
Run Code Online (Sandbox Code Playgroud)

如上所示:https : //stackoverflow.com/a/24084708/8953378


use*_*745 5

这是一个“shade”类,您可以将其直接添加到任何<img>标签,如下所示

<img src="imgs/myimg.png" class="shade">
Run Code Online (Sandbox Code Playgroud)
<img src="imgs/myimg.png" class="shade">
Run Code Online (Sandbox Code Playgroud)