【しーえすえすあにめーしょん】

CSSアニメーション とは?

最終更新:
💡 CSSだけで要素に「動き」を付ける魔法

CSSだけでウェブページ上の要素に動きを付ける技術。フェードイン・スライド・回転などのアニメーションをJavaScript不要で実現できる。

📌 このページのポイント
CSSで、時間に合わせて見た目を変えるフェードインの例:opacity 0 → 10%opacity 050%opacity 0.5100%opacity 1時間の進行 →
opacityを0から1へlinearで変える例です。0%の点線は、透明な要素の位置を示す補助線です。
ひよこ ひよこ
CSSアニメーションって何?
ペンギン先生 ペンギン先生
CSSだけでウェブページの要素に動きを付ける技術だよ。ボタンをホバーしたときに色がふわっと変わったり、ページを開いたときに要素がスライドして現れたりする、あの動きのことだね。
ひよこ ひよこ
transitionと@keyframesの違いは?
ペンギン先生 ペンギン先生
transitionは「AからBへの変化を滑らかにする」もの。ホバーしたとき色が0.3秒かけてゆっくり変わる、みたいな単純な遷移に使う。@keyframesは「0%のとき→50%のとき→100%のとき」みたいに途中の状態も細かく指定できるから、ローディングスピナーのようなずっと動き続けるアニメーションが作れるんだ。
ひよこ ひよこ
おもしろい!JavaScriptでアニメーションするのとどっちがいいの?
ペンギン先生 ペンギン先生
CSSかJavaScriptかだけでは性能は決まらないよ。何を動かすか、要素数、ブラウザーなどに左右されるんだ。単純な見た目の変化はCSSで表現しやすく、条件分岐などが必要ならJavaScriptと組み合わせられるよ。
ひよこ ひよこ
CSSアニメーションで気を付けることは?
ペンギン先生 ペンギン先生
transformやopacityはレイアウトや再描画を避けやすいけど、必ずGPUで高速になる保証はないよ。幅や高さを動かすとレイアウトの負荷が増えることがあるから、実際に測ろう。動きを減らしたい人にはprefers-reduced-motionに応じた表示も用意するんだ。
もっと詳しく知りたい人へ

@keyframesを書いたのに動かないのはなぜ?

要素のanimation-nameがキーフレーム名と一致しているか、animation-durationが0秒のままになっていないかを確認します。@keyframesの定義だけでは要素に適用されません。表示がdisplay:noneの場合や、ほかの指定で値が上書きされている場合も確認します。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「CSSアニメーション」って出てきたら「CSSで、見た目を時間とともに変化させる仕組み」と思えばだいたいOK!
📖 おまけ:英語の意味
「CSS Animation」 = CSSによるアニメーション
💬 Animationは「動画・動き」。CSSのプロパティを時間的に変化させて動きを作り出すよ

参考資料

← 用語集にもどる