簡單幾步用純CSS3實現3D翻轉效果


作為前端開發人員的必修課,CSS3翻轉能帶我們完成許多基本動效,本期我們將用CSS3實現hover翻轉效果~

第一步非常簡單,我們簡單畫1個演示方塊,為其 添加transition和transform屬性 :

?
1
2
3
4
5
6
7
8
9
10
11
// 本示例均使用Sass語法
. block {
   width : 200px ;
   height : 200px ;
   background : brown;
   cursor : pointer ;
   transition: 0.8 s;
   &:hover {
     transform: rotateY( 180 deg);
   }
}

我們看一看這時候的效果:

這里 需要注意 的是: transition屬性要寫在.block上而不是hover上 ,如果只在hover上寫transition,則鼠標移出時並沒有transition的過渡效果,如果我們只將transition寫在hover上:

第二步比較關鍵:我們不難發現始終在1個平面上翻轉,不夠有立體感,因此我們需要稍加改變思路—— 用2層div嵌套css3背景動畫

?
1
2
3
4
// html部分
< div class = "block" >
     < div class = "block-in" ></ div >
</ div >
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// CSS部分
. block {
   width : 200px ;
   height : 200px ;
   cursor : pointer ;
  
   &-in {
     background : brown;
     height : 100% ;
     transition: 0.8 s;
   }
   
   &:hover .block-in {
     transform: rotateY( 180 deg);
   }
}

此時效果沒變,如下:

這個時候 關鍵的1步 來了:我們需要 給外層添加perspective和transform-style屬性 css3導航菜單 ,為整個動畫增添3D變形效果:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
. block {
   width : 200px ;
   height : 200px ;
   cursor : pointer ;
   /* 3D變形 */
   transform-style: preserve -3 d;
   -webkit-perspective: 1000 ;
   -moz-perspective: 1000 ;
   -ms-perspective: 1000 ;
   perspective: 1000 ;
  
   &-in {
     background : brown;
     height : 100% ;
     transition: 0.8 s;
   }
  
   &:hover .block-in {
     transform: rotateY( 180 deg);
   }
}

最終實現效果如下:

最終我們 總結一下思路 :

1.建立內外2層div,鼠標 hover 到外層時,內層div添加翻轉css3 transform: rotateY(180deg)

2.注意將 transition 屬性添加到需要翻轉的div上,而不是 hover 時

3.外層div添加 perspective 和 transform-style 屬性,最終實現3D翻轉效果


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM