这绝对有可能只使用CSS。看到这个捣鼓一个例子:https://jsfiddle.net/ffqdmcws/
HTML:
<div class="crossfade">
<div class="static"></div>
<div class="hover"></div>
</div>
CSS:
.crossfade {
position: relative;
width: 300px;
height: 200px;
}
.static, .hover {
position: absolute;
width: 100%;
height: 100%;
transition: opacity 1s ease;
}
.static {
background: url('http://lorempixel.com/300/200/food');
opacity: 1;
}
.hover {
background: url('http://lorempixel.com/300/200/cats');
opacity: 0;
}
.crossfade:hover > .static {
opacity: 0;
}
.crossfade:hover > .hover {
opacity: 1;
}
在这种情况下,我已经得到了使用crossfade
类div容器,和一对夫妇的其他里面的div,使用类static
和hover
。
static
类包含最初显示的背景,hover
类包含在悬停时淡出的背景。 static
类的初始不透明度为1,hover
类的初始不透明度为0,所以您只能看到类static
的div。
然后,如果你连上使用.crossfade:hover
容器div的,悬停动作,以便设置opacity: 0;
为static
和opacity: 1;
为hover
,隐藏static
,并显示hover
,当你将鼠标悬停在div容器。
最后,为了使背景重叠,使用absolute
定位两个内部div,所以它们在任何时候都处于彼此之上。此外,对于真正的淡入淡出效果,您需要transition: opacity 1s ease;
规则,该规则说明您希望不透明度在1秒内过渡,而不是立即切换。从1-> 0和0-> 1不透明度的div都会给你背景图像的淡入淡出效果。