【しーえすえすあにめーしょん】
CSSアニメーション とは?
💡 CSSだけで要素に「動き」を付ける魔法
📌 このページのポイント
- CSSだけでウェブページの要素にアニメーションを付けられる
- transitionはホバー時などの状態変化を滑らかにする
- @keyframesを使うと複雑なアニメーションを定義できる
- JavaScriptなしで軽量にアニメーションを実現できる
CSSアニメーションって何?
CSSだけでウェブページの要素に動きを付ける技術だよ。ボタンをホバーしたときに色がふわっと変わったり、ページを開いたときに要素がスライドして現れたりする、あの動きのことだね。
transitionと@keyframesの違いは?
transitionは「AからBへの変化を滑らかにする」もの。ホバーしたとき色が0.3秒かけてゆっくり変わる、みたいな単純な遷移に使う。@keyframesは「0%のとき→50%のとき→100%のとき」みたいに途中の状態も細かく指定できるから、ローディングスピナーのようなずっと動き続けるアニメーションが作れるんだ。
おもしろい!JavaScriptでアニメーションするのとどっちがいいの?
CSSアニメーションで気を付けることは?
パフォーマンスの罠があるんだ。CSSで動かせるプロパティは大きく2種類あって、transformとopacityは「GPUで処理される(コンポジットレイヤー)」から高速。一方widthやheightやtop、marginなどを動かすと「レイアウトの再計算(リフロー)」が毎フレーム発生して、ガクガクになる。だから「左に動かす」のにleftを使うのではなくtranslateXを使うのが鉄則。さらにwill-changeプロパティで事前にブラウザにアニメーションを通知できるんだけど、多用するとメモリを消費する。また、prefers-reduced-motionメディアクエリで「動きを減らしたい」ユーザーへの配慮も忘れてはいけないポイントだよ。
📖 おまけ:英語の意味
「CSS Animation」 = CSSによるアニメーション
💬 Animationは「動画・動き」。CSSのプロパティを時間的に変化させて動きを作り出すよ