CSS 上下にアニメーションする要素を作成する
上下にアニメーションする要素を作成する方法を紹介します。
完成形
以下のようなイメージです。
上下に移動する要素をCSS
のスタイルのみで作成します。
<style>
.animated {
animation: move-y .5s infinite alternate ease-in-out;
display: inline-block;
color: red;
}
@keyframes move-y {
from {
transform: translateY(0);
}
to {
transform: translateY(10px);
}
}
</style>
<a>以下をクリック<span class="animated">↓↓</span></a>
アニメーションの作成
move-y
という名前でアニメーションを作成します。
translateY
で要素を指定した位置まで移動させることができます。
これをアニメーションで繰り返すことにより、上下に動く要素を作成できます。
<style>
@keyframes move-y {
from {
transform: translateY(0);
}
to {
transform: translateY(10px);
}
}
</style>
アニメーションの適用
animation
のスタイルを適用します。
display: inline-block
はインライン要素をアニメーションさせるために必要になります。
<style>
.animated {
animation: move-y 0.5s infinite alternate ease-in-out;
display: inline-block;
}
@keyframes move-y {
from {
transform: translateY(0);
}
to {
transform: translateY(10px);
}
}
</style>
animation
の設定値を1つづつ解説します。
move-y
でアニメーションの名称を指定して、0.5s
でアニメーションを0.5秒かけて実行するように指定しています。
infinite
でアニメーションの動作が無限に繰り返すようにしています。
alternate
を指定すると、アニメーションがto
まで達したあと、from
に戻るのではなく、to
→from
のアニメーションを実行してfrom
の状態に戻ります。
以下はalternate
を指定しない状態の動作です。to
→from
のアニメーションが実行されていないことが確認できます。
ease-in-out
を指定すると、アニメーションの速度を調整できます。
通常はfrom
→to
の状態に一定の速度でアニメーションが行われますが、ease-in-out
を指定した場合は、最初に高速で動作して、後半はゆっくりした動作になります。
これにより自然な形のアニメーションを実行することができます。
以下はease-in-out
を指定しない状態の動作です。アニメーションの動作に違和感を感じると思います。
WEBページのUI部分には自然な形に見えるease-in-out
を使用することが多いです。