這絕對有可能只使用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都會給你背景圖像的淡入淡出效果。