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

CSSアニメーション とは?

💡 CSSだけで要素に「動き」を付ける魔法
📌 このページのポイント
CSSアニメーション(@keyframes) 時間 0% 初期状態 opacity: 0 left: 0px 25% 50% 中間状態 opacity: 0.5 scale: 1.2 75% 100% 最終状態 opacity: 1 left: 200px キーフレームで状態を定義→ブラウザが中間状態を自動補間
CSSアニメーションのイメージ
ひよこ ひよこ

CSSアニメーションって何?

ペンギン先生 ペンギン先生

CSSだけでウェブページの要素に動きを付ける技術だよ。ボタンをホバーしたときに色がふわっと変わったり、ページを開いたときに要素がスライドして現れたりする、あの動きのことだね。

ひよこ ひよこ

transitionと@keyframesの違いは?

ペンギン先生 ペンギン先生

transitionは「AからBへの変化を滑らかにする」もの。ホバーしたとき色が0.3秒かけてゆっくり変わる、みたいな単純な遷移に使う。@keyframesは「0%のとき→50%のとき→100%のとき」みたいに途中の状態も細かく指定できるから、ローディングスピナーのようなずっと動き続けるアニメーションが作れるんだ。

ひよこ ひよこ

おもしろい!JavaScriptでアニメーションするのとどっちがいいの?

ペンギン先生 ペンギン先生

単純な動きならCSSの方がパフォーマンスが良いよ。CSSアニメーションはブラウザが最適化してGPUで処理してくれるから滑らかに動く。複雑な制御(スクロール位置に連動する、条件で分岐するなど)が必要な場合はJavaScriptを使うのが良いね。

ひよこ ひよこ

CSSアニメーションで気を付けることは?

ペンギン先生 ペンギン先生

パフォーマンスの罠があるんだ。CSSで動かせるプロパティは大きく2種類あって、transformとopacityは「GPUで処理される(コンポジットレイヤー)」から高速。一方widthやheightやtop、marginなどを動かすと「レイアウトの再計算(リフロー)」が毎フレーム発生して、ガクガクになる。だから「左に動かす」のにleftを使うのではなくtranslateXを使うのが鉄則。さらにwill-changeプロパティで事前にブラウザにアニメーションを通知できるんだけど、多用するとメモリを消費する。また、prefers-reduced-motionメディアクエリで「動きを減らしたい」ユーザーへの配慮も忘れてはいけないポイントだよ。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
CSSアニメーション」って出てきたら「CSSだけでウェブページに動きを付ける技術のことだな」と思えればだいたいOK!
📖 おまけ:英語の意味
「CSS Animation」 = CSSによるアニメーション
💬 Animationは「動画・動き」。CSSのプロパティを時間的に変化させて動きを作り出すよ
← 用語集にもどる