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

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

第一步很是簡單,咱們簡單畫1個演示方塊,爲其添加transition和transform屬性html

// 本示例均使用Sass語法
.block {
  width: 200px;
  height: 200px;
  background: brown;
  cursor: pointer;
  transition: 0.8s;
  &:hover {
    transform: rotateY(180deg);
  }
}

咱們看一看這時候的效果:前端

圖片描述

這裏須要注意的是:transition屬性要寫在.block上而不是hover上,若是隻在hover上寫transition,則鼠標移出時並無transition的過渡效果,若是咱們只將transition寫在hover上:web

圖片描述

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

// html部分
<div class="block">
    <div class="block-in"></div>
</div>
// CSS部分
.block {
  width: 200px;
  height: 200px;
  cursor: pointer;
 
  &-in {
    background: brown;
    height: 100%;
    transition: 0.8s;
  }
  
  &:hover .block-in {
    transform: rotateY(180deg);
  }
}

此時效果沒變,以下:spa

圖片描述

這個時候關鍵的1步來了:咱們須要給外層添加perspective和transform-style屬性,爲整個動畫增添3D變形效果:3d

.block {
  width: 200px;
  height: 200px;
  cursor: pointer;
  /* 3D變形 */
  transform-style: preserve-3d;
  -webkit-perspective: 1000;
  -moz-perspective: 1000;
  -ms-perspective: 1000;
  perspective: 1000;
 
  &-in {
    background: brown;
    height: 100%;
    transition: 0.8s;
  }
 
  &:hover .block-in {
    transform: rotateY(180deg);
  }
}

最終實現效果以下:code

圖片描述

最終咱們 總結一下思路: 1.創建內外2層div,鼠標 hover 到外層時,內層div添加翻轉 transform: rotateY(180deg) 2.注意將 transition 屬性添加到須要翻轉的div上,而不是 hover 時 3.外層div添加 perspective 和 transform-style 屬性,最終實現3D翻轉效果
相關文章
相關標籤/搜索