CSS @keyframes(キーフレーム)の使い方を徹底解説!アニメーション作成の基本と実例
CSSを使えば、アニメーションを驚くほど手軽に実装できます。しかも、サードパーティ製のフレームワークやプラグインは一切不要。標準のCSSだけで完結するのが大きな魅力です。
その中核となるのが、@keyframesというCSSルールです。この記事では、@keyframesの基本構文から実際のアニメーション作成例まで、わかりやすく解説していきます。
@keyframesの基本構文
@keyframesは、CSSの「アットルール(at-rule)」の一種です。アットルールとは、CSSがどのように振る舞うべきかを指示するための記述で、ほかにも@viewportや@supportsなど、さまざまな種類があります。
@keyframesルールは、次のような構文で定義します。
@keyframes <name> {
from {
/* 開始時のスタイルをここに記述 */
}
to {
/* 終了時のスタイルをここに記述 */
}
}
from / to のキーワードの代わりにパーセンテージを指定すれば、より細かくアニメーションの過程をコントロールできます。
@keyframes <name> {
0% { }
50% { }
100% { }
}
ポイント: 作成したキーフレームを実際に使用するには、animation-nameプロパティの値として指定する必要があります。あわせてanimation-durationプロパティで再生時間を指定すると、アニメーションが完成します。
実例①:マジックボールの出現・消失アニメーション
それでは早速、「マジックボール」が出現したり消えたりするアニメーションを作ってみましょう。途中で迷ったときは、付属のCodepenを参照してください。
まずはアニメーションを定義します。ここでは「magic-ball」という名前を付けます。
@keyframes magic-ball {
from {
background-color: limegreen;
}
to {
background-color: blueviolet;
}
}
このコードでは、背景色をライムグリーン(limegreen)からブルーバイオレット(blueviolet)へと変化させています。このアニメーションは任意の要素に適用できますが、今回は円形の要素に使ってみましょう。
.circle {
width: 10rem;
height: 10rem;
border-radius: 50%;
animation-name: magic-ball;
animation-duration: 4s;
}
忘れないでください: キーフレームアニメーションを動作させるには、animation-nameプロパティにアニメーション名を指定し、animation-durationで秒単位の再生時間を設定する必要があります。
これで、ボールがふわっと出現しては消えるアニメーションの完成です!💥
実例②:スライドインアニメーション
続いて、もうひとつ別のアニメーションを作成します。今度は正方形の要素を動かすエフェクトです。アニメーション名は「moveIn」とし、こちらではパーセンテージを使って定義します。
@keyframes moveIn {
0% {
opacity: 0;
transform: translateY(3rem);
}
100% {
opacity: 1;
transform: translate(0);
}
}
opacityは要素の透明度を表すプロパティです。この新しく作成したアニメーションを、正方形に適用してみましょう。
.square {
width: 10rem;
height: 10rem;
background-color: greenyellow;
animation-name: moveIn;
animation-duration: 4s;
}
わずかなコード量で、洗ード量で、洗練されたフェードイン&スライドイン効果を実現できたことがわかりますね!
まとめ
アニメーションについてさらに学びたい方は、MDN Web DocsなどのCSSアニメーション公式ドキュメントを読んでみてください。なお、本記事で触れたのはanimation-durationによる調整方法だけですが、animation-delay(開始までの遅延)やanimation-timing-function(速度カーブ)、animation-iteration-count(繰り返し回数)など、ほかにも便利なサブプロパティが多数あります。
最後にひとつ注意点として、すべてのCSSプロパティがアニメーション可能なわけではありません。実装前に、アニメーション対応プロパティの一覧を確認しておくと安心です。
-
CSS Flexbox入門:親コンテナと子アイテムの主要プロパティを徹底解説
CSS Flexbox(フレックスボックス)モデルは、従来のCSSボックスモデルを改善するために考案されました。Flexboxモデルには、ボックスモデルの主要な要素(margin、padding、border、content)がそのまま含まれていますが、さらに柔軟性が加わり、コンテナ(親要素)の中に子要素を最適な形で配置できるようになっています。 このチュートリアルでは、Flexboxモジュールの基本をわかりやすく解説し、よりレスポンシブなサイト制作に役立てられるようサポートします。 以下は、基本的なFlexboxモデルのデモ用スターターコードです。解説を読みながら、実際にコードを動かして
-
CSSシェイプ入門:正方形からハートまで図形を自由に描く方法
それでは、楽しいCSSシェイプを作っていきましょう!すべてのコードは私のCodepenで確認できます。さっそく始めましょう。 長方形と正方形 すべての図形はdiv要素で囲みます。最も基本的な図形は正方形と長方形です。divはデフォルトで、widthとheightプロパティの値に応じて正方形や長方形として表示されるためです。正方形は幅と高さが等しく、長方形は等しくありません。 .rectangle { width: 2rem; height: 4rem; background-color: violet; } .square { width: 5rem; height