Walking Boots Demo
See the Pen
CSS100Days 011 by Cathy (@smile25896)
on CodePen.
這次的主題是要模擬鞋子走路的動畫,關於 css 動畫的語法介紹,可以參考這篇 [CSS100] Day 02 Menu Icon。
這題就像是應用題,我們之前學過怎麼做動畫了,那麼該怎麼模擬走路的樣子呢?
先模擬腿的部分
html 和 基本 css 的部分我就不佔篇幅描述,這邊只著重在跟動畫有端的部分。
我們先來看一下在腿的動畫,我們預計要達到的效果:
很明顯的這是對腿部的地方加上旋轉的動畫,旋轉的軸心在腿部的上方,因此我們設定 transform-origin: top
調整旋轉的軸心:
1 2 3
| .leg { transform-origin: top; }
|
接著我們要來設定腿部動畫的關鍵影格,
動畫的開頭和結尾都設定 30deg
的旋轉,中間 50%的地方設定 -30deg
的旋轉,
右腳則是相反,50%的地方都設定 30deg
的旋轉,開頭和結尾的部分設定 -30deg
的旋轉,程式碼如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| @keyframes walk { 0%, 100% { transform: rotate(30deg); } 50% { transform: rotate(-30deg); } } @keyframes walk-r { 0%, 100% { transform: rotate(-30deg); } 50% { transform: rotate(30deg); } }
|
並套上動畫:
1 2 3 4 5 6 7
| .right { animation: walk-r 2s ease-in-out infinite; }
.left { animation: walk 2s ease-in-out infinite; }
|
再模擬鞋子的部分
目前看起來只有腿在旋轉,非常的不自然因此我們再加上鞋子的動畫,讓他有踏地的感覺:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
| @keyframes walk-shoe { 0%, 100% { transform: rotate(0deg); } 12.5% { transform: rotate(-15deg) translate(0, -5px); } 25% { transform: rotate(-5deg) translate(0, -40px); } 50% { transform: rotate(5deg) translate(0, -5px); } 62.5% { transform: rotate(15deg) translate(0, 5px); } 75% { transform: rotate(0deg) translate(0, 5px); } }
.right { .shoe { animation: walk-shoe 2s linear infinite; animation-delay: 1s; } }
.left { .shoe { animation: walk-shoe 2s linear infinite; } }
|