如何在不制作新的较暗图像的情况下使悬停时的背景图像变暗?
CSS:
.image {
background: url('http://cdn1.iconfinder.com/data/icons/round-simple-social-icons/58/facebook.png');
width: 58px;
height: 58px;
}
JSFiddle 链接:http: //jsfiddle.net/qrmqM/1/
如何在不制作新的较暗图像的情况下使悬停时的背景图像变暗?
CSS:
.image {
background: url('http://cdn1.iconfinder.com/data/icons/round-simple-social-icons/58/facebook.png');
width: 58px;
height: 58px;
}
JSFiddle 链接:http: //jsfiddle.net/qrmqM/1/
类似,但又有点不同。
使图像 100% 不透明度,使其清晰。然后在 img hover 上将其降低到您想要的不透明度。在此示例中,我还添加了缓动以实现良好的过渡。
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;
}
这样就可以了,希望有帮助。
谢谢罗伯特·拜尔斯的jsfiddle
这个怎么样,使用覆盖?
.image:hover > .overlay {
width:100%;
height:100%;
position:absolute;
background-color:#000;
opacity:0.5;
border-radius:30px;
}
如果要使图像变暗,请使用具有rgba
和opacity
属性的叠加元素,这将使图像变暗...
<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;
}
注意:我也使用 CSS3 过渡来获得平滑的暗效果
如果有人要在 DOM 中保存一个额外的元素,那么您也可以使用:before
或:after
伪..
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;
}
这里使用 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;
}
通过使用新的Filter CSS 选项,我能够比上述答案更容易地实现这一点,并且只需一行代码。
它在现代浏览器中的兼容性非常好 - 在撰写本文时为 95%,尽管低于其他答案。
img:hover{
filter: brightness(50%);
}
<img src='https://via.placeholder.com/300'>
你可以使用这个:
box-shadow: inset 0 0 0 1000px rgba(0,0,0,.2);
这是一个“阴影”类,您可以<img>
像这样直接添加到任何标签
<img src="imgs/myimg.png" class="shade">
img.shade:hover {
-webkit-filter: brightness(85%);
-webkit-transition: all 10ms ease;
-moz-transition: all 10ms ease;
-o-transition: all 10ms ease;
-ms-transition: all 10ms ease;
transition: all 10ms ease;
}
添加CSS:
.image{
opacity:.5;
}
.image:hover{
// CSS properties
opacity:1;
}
试试这个
CSS
.image {
background: url('http://cdn1.iconfinder.com/data/icons/round-simple-social-icons/58/facebook.png');
width: 58px;
height: 58px;
opacity:0.4;
filter:alpha(opacity=40); /* For IE8 and earlier */
}
.image:hover{
background: url('http://cdn1.iconfinder.com/data/icons/round-simple-social-icons/58/facebook.png');
width: 58px;
height: 58px;
border-radius:100px;
opacity:1;
filter:alpha(opacity=100);
}
HTML
<div class="image"></div>
试试下面的代码:
.image {
background: url('http://cdn1.iconfinder.com/data/icons/round-simple-social-icons/58/facebook.png');
width: 58px;
height: 58px;
opacity:0.2;
}
.image:hover{
opacity:1;
}
.image:hover {
background: #000;
width: 58px;
height: 58px;
border-radius:60px;
}
你会变黑
在不添加额外覆盖元素或使用两个图像的情况下,最简单的方法是使用 :before 或 :after 选择器。
.image {
position: relative;
}
.image:hover:after {
content: "";
position: absolute;
width: 100%;
height: 100%;
background: rgba(0,0,0,0.1);
top: 0;
left:0;
}
这当然不适用于旧版浏览器;只是说它优雅地退化!
如果您必须使用当前图像并获得较暗的图像,那么您需要创建一个新图像。否则,您可以简单地降低 .image 类的不透明度,而在 .image:hover 中,您可以为不透明度设置更高的值。但是没有悬停的图像会显得苍白。
最好的方法是创建两个图像并添加以下内容:
.image {
background: url('http://cdn1.iconfinder.com/data/icons/round-simple-social-icons/58/facebook.png');
width: 58px;
height: 58px;
opacity:0.9;
}
.image:hover{
background: url('http://cdn1.iconfinder.com/data/icons/round-simple-social-icons/58/facebook_hover.png');
}
}
我会在图像周围添加一个 div 并在悬停时使图像的不透明度发生变化,并在悬停时向 div 添加一个插入框阴影。
img:hover{
opacity:.5;
}
.image:hover{
box-shadow: inset 10px 10px 100px 100px #000;
}
<div class="image"><img src="image.jpg" /></div>
试试这个代码。
img:hover
{
box-shadow: 0 25px 50px -25px rgba(0, 0, 0, .5) inset;
-webkit-box-shadow: 0 25px 50px -25px rgba(0, 0, 0, .5) inset;
-moz-box-shadow: 0 25px 50px -25px rgba(0, 0, 0, .5) inset;
-o-box-shadow: 0 25px 50px -25px rgba(0, 0, 0, .5) inset;
}