CSSのkeyframesでイージングを個別に設定できることを知らなかったので、方法をメモしておきます。
サンプルコード
ボールがバウンドするようなアニメーションを実装してみます。
まずは対応前のコードです。
HTML
<div class="ball"></div>
CSS
.ball { position: relative; top: 100px; left: 100px; width: 40px; height: 40px; border-radius: 20px; background: #000; animation: ball 2s linear infinite; } @keyframes ball { 0% { transform: translateY(-50px); } 20% { transform: translateY(0px); } 38% { transform: translateY(-32px); } 56% { transform: translateY(0px); } 72% { transform: translateY(-12px); } 88% { transform: translateY(0px); } 100% { transform: translateY(0px); } }
animation-timing-functionで一定の速度で動くlinearを指定して、keyframesの割合で調整しています。
対応前のデモページ
keyframes内でanimation-timing-functionが指定できるので、個別に設定してみます。
CSS
.ball { position: relative; top: 100px; left: 100px; width: 40px; height: 40px; border-radius: 20px; background: #000; animation: ball 2s linear infinite; } @keyframes ball { 0% { transform: translateY(-50px); animation-timing-function: ease-in; } 20% { transform: translateY(0px); animation-timing-function: ease-out; } 38% { transform: translateY(-32px); animation-timing-function: ease-in; } 56% { transform: translateY(0px); animation-timing-function: ease-out; } 72% { transform: translateY(-12px); animation-timing-function: ease-in; } 88% { transform: translateY(0px); } 100% { transform: translateY(0px); } }
これで個別にイージングが設定され、最初のサンプルよりボールのバウンドのような動きになりました。
対応後のデモページ
コメントが承認されるまで時間がかかります。