1. 程式人生 > >css3實現圖片平滑切換

css3實現圖片平滑切換

疑惑點透徹分析,側重點: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>