css3實現圖片平滑切換
阿新 • • 發佈:2019-01-31
疑惑點透徹分析,側重點:hover實現圖片切換
css部分:
<style>
#div01{
width:200px;
height:200px;
position: relative;
}
img{
width:200px;
height:200px;
border:1px solid aqua;
transition:all 1s ease-in-out;
/*這裡的transition屬性要放在img元素內,這樣兩張圖片來回切換才會過渡的比較平滑*/
}
.img01-top{
position: absolute;
opacity: 0;
-webkit-transform: scale(0,0);
-moz-transform: scale(0,0);
-ms-transform: scale(0,0);
-o-transform: scale(0,0);
transform: scale(0,0);
}
/*我之前一直沒有搞懂,我要觸發的是圖片,為什麼直接用.img01-top:hover就達不到我想要的效果呢,後來想明白了,在這裡我就詳細的解釋一下*/
/*(這裡的.div01:hover .img01-top=.div01_hover.img01-top 後者主要是主要是相容IE瀏覽器的)
我們需要的做的是讓.img02-bottom圖片消失的同時.img01-top圖片顯示,
然而.img02-bottom圖片消失後.img01-top圖片還是消失的狀態(因為它的opacity:0;transform: scale(0,0);只有觸發它才能顯示),(因為圖片放置的層疊順序我們只能觸發到.img02-bottom,也就是.img02-bottom的圖片是可見的)所以無法給其新增.img01-top:hover,
所以這裡要用.div01:hover .img01-top,因為div是永遠存在,不會消失的,先觸發div01 再觸發.img01-top,這就是為什麼我們平時所見到span,div元素外面還要再套一層div,只是作為一個容器,方便於新增你想完成的觸發事件或樣式等*/
.div01:hover .img01-top , .div01_hover .img01-top{
opacity:1;
transform: scale(1,1);
transform-origin: right top;
}
.div01:hover .img02-bottom , .div01_hover .img02-bottom{
opacity:0;
transform: scale(0,0);
transform-origin:left bottom ;
}
</style>
body部分
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>CSS3實現圖片平滑轉換</title>
</head>
<body>
<div id="div01" class="div01">
<img class="img01-top" src="sweety.jpg" alt="sweety">
<img class="img02-bottom" src="honey.jpg" alt="honey">
</div>
</body>
</html>