這篇文章帶給大家的內容是關於如何使用純CSS實現寶路薄荷糖的動畫(附源碼),有一定的參考價值,有需要的朋友可以參考一下,希望對你有所幫助。
https://github.com/comehope/front-end-daily -challenges
定義dom,只有1 個元素:
<div></div>
居中顯示:
body { margin: 0; height: 100vh; display: flex; align-items: center; justify-content: center; background-color: silver; }
定義容器尺寸:
.spinner { width: 50vmin; height: 50vmin; position: relative; }
用before
偽元素畫出1 個像寶路薄荷糖狀的黑色圓環:
.spinner::before { content: ''; position: absolute; box-sizing: border-box; width: inherit; height: inherit; border: 12.5vmin solid; border-radius: 50%; }
接下來製作動畫效果。
設定透視景深:
body { perspective: 400px; }
讓圓環在z 軸上移動:
.spinner::before { animation: spin 1.5s ease-in-out infinite both reverse; } @keyframes spin { 0%, 100% { transform: translateZ(10vmin); } 60% { transform: translateZ(-10vmin); } }
讓圓環在z 軸距離較大時稍微傾斜:
@keyframes spin { 0%, 100% { transform: translateZ(10vmin) rotateX(25deg); } 60% { transform: translateZ(-10vmin); } }
增加縮放效果:
@keyframes spin { 0%, 100% { transform: translateZ(10vmin) rotateX(25deg); } 33% { transform: translateZ(-10vmin) scale(0.4); } 60% { transform: translateZ(-10vmin); } }
用after
偽元素再畫出一個白色的圓環,並且讓它的動畫延遲動畫總長的一半時間:
.spinner::before, .spinner::after { /*略*/ animation: spin 1.5s ease-in-out infinite both reverse; } .spinner::after { border-color: white; animation-delay: -0.75s; }
接下來製作容器的動畫效果,為了不受子元素動畫的影響,先暫時屏蔽偽元素的動畫效果。
.spinner::before, .spinner::after { /* animation: spin 1.5s ease-in-out infinite both reverse; */ }
增加容器沿著x 軸旋轉的動畫效果,動畫時間為子元素動畫時間的2倍:
.spinner { animation: wobble 3s ease-in-out infinite; } @keyframes wobble { 0%, 100% { transform: rotateX(15deg); } 50% { transform: rotateX(60deg); } }
增加容器沿y 軸旋轉的動畫效果:
@keyframes wobble { 0%, 100% { transform: rotateX(15deg) rotateY(60deg); } 50% { transform: rotateX(60deg) rotateY(-60deg); } }
增加容器整體旋轉的動畫效果:
@keyframes wobble { 0%, 100% { transform: rotateX(15deg) rotateY(60deg); } 50% { transform: rotateX(60deg) rotateY(-60deg) rotate(180deg); } }
開啟子元素的動畫效果,使子元素的動畫效果和容器的動畫效果疊加:
.spinner::before, .spinner::after { animation: spin 1.5s ease-in-out infinite both reverse; }
最後,使子元素在3d 空間上運動:
.spinner { transform-style: preserve-3d; }
大功告成!
#以上是如何使用純CSS實現寶路薄荷糖的動畫(附源碼)的詳細內容。更多資訊請關注PHP中文網其他相關文章!