作為前端開發人員的必修課,CSS3翻轉能帶我們完成許多基本動效,本期我們將用CSS3實現hover翻轉效果~ 第一步非常簡單,我們簡單畫1個演示方塊,為其 添加transition和transform屬性 : ? 1 2 3 4 5 6 7 8 9 10 11 // 本示例均使用Sass語法 .bl ...
作為前端開發人員的必修課,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翻轉效果