PR

CSSアニメーションの基本ルールと実践ガイド

【広告】

CSSアニメーションの基礎を解説します。
@keyframesanimation プロパティの使い方から、実務で使えるテクニックまでを順番に説明していきます。

CSSで動きを作る2つの手法

用途に合わせて使い分けます。

  • transition(単純な状態変化) マウスホバー時などに、プロパティの値を一度だけ滑らかに変える。
  • animation(複雑なアニメーション) 自動再生やループ、3段階以上の複雑な動きを作る。

animation の基本構成

animation は、「設計図」と「実行の指示」の2つを組み合わせて使います。

① @keyframes(動きの設計図)

「どのタイミングで、どんな状態にするか」を定義します。

@keyframes fade-in {
  0%   { opacity: 0; }
  100% { opacity: 1; }
}
  • 0%(from): 開始時の状態
  • 100%(to): 終了時の状態
  • その中間(50%など)を足せば、より複雑な動きになります。

② animationプロパティ(実行の指示)

要素に設計図を割り当て、再生時間を指定します。

  • animation-name: 設計図の名前
  • animation-duration: 再生時間(例: 2s

【実践】最短3ステップで要素を動かしてみよう

@keyframes(設計図)と animation(指示)を使い、実際にHTML要素を動かしましょう。
ここでは、「要素を右にスライドさせる」一番簡単なアニメーションを3つのステップで実現します。

ステップ1:HTML要素と基本スタイルを準備する

動かすための div 要素をHTMLに用意し、その見た目と初期位置をCSSで設定します。

<!-- HTML -->
<div class="box">動くよ!</div>
/* style.css */
.box {
  width: 100px;
  height: 100px;
  background-color: skyblue;
  color: white;
  display: flex;
  justify-content: center;
  align-items: center;

  /* ★要素を動かすための初期位置を定義(重要!) */
  transform: translateX(0);
}

ステップ2:@keyframes で「変化の設計図」を作る

次に、「右に300ピクセル移動する」という動きの設計図(slide-right)を作成します。この段階では要素はまだ動きません。

/* style.cssに追記 */
@keyframes slide-right {
  0% {
    /* スタート時: X軸(横方向)に移動なし */
    transform: translateX(0);
  }
  100% {
    /* ゴール時: X軸(横方向)に300px移動 */
    transform: translateX(300px);
  }
}

ステップ3:animation プロパティを要素に適用する

最後に、作成した設計図を .box に適用し、動き出すための指示(名前、時間、緩急)を与えます。

/* style.cssを更新 */
.box {
  /* ... ステップ1のスタイル ... */
  
  /* ↓ ↓ ↓ ここからアニメーションの指示 ↓ ↓ ↓ */
  animation-name: slide-right;      /* どの設計図を使うか(名前)*/
  animation-duration: 2s;           /* 2秒かけて動かす(時間)*/
  animation-timing-function: ease;  /* 動きに緩急をつける(速度変化)*/
}

この3ステップで、box要素が2秒かけて右に移動するアニメーションが実現します。

動くよ!

👆ブラウザをリロードしたら動きます

コピペで使える!実用的なアニメーションテクニック

基礎が固まったところで、実務で頻繁に使う応用テクニックを見ていきましょう。これらのテクニックを組み合わせることで、サイトの表現力が格段に向上します。

ホバー時のバウンド演出

マウスホバー時に、transform プロパティを使って要素を一度だけ跳ねさせる設定です。

/* 1. 動きの設計図(@keyframes)を作成 */
@keyframes box-bounce {
  0%, 100% {
    /* 0%と100%は通常の状態 */
    transform: translateY(0); /* Y軸(垂直方向)に移動なし */
  }
  50% {
    /* 中間地点で上に少し持ち上げる */
    transform: translateY(-5px); 
    box-shadow: 0 5px 15px rgba(0, 0, 0, 0.2); /* 影を濃くする */
  }
}

/* 2. ホバー時にアニメーションを適用 */
.box:hover { 
  /* ホバー時だけ設計図の動きを再生 - 個別のプロパティで記述 */
  animation-name: box-bounce; /* どの設計図を使うか */
  animation-duration: 0.8s; /* 再生時間 */
}
動くよ!

👆マウスを乗せてください

「無限ループ」アニメーションの実装

ローディング画面や背景の要素を常に動かしたい場合に、アニメーションを無限に繰り返す設定を使います。

「無限」の繰り返し設定

animation プロパティに以下の設定を追加するだけで実現できます(「実践」で作った slide-right の動きを無限化する例)。

.box {
  animation-name: slide-right;
  animation-duration: 3s;         /* 再生時間を3秒に変更 */
  animation-timing-function: linear; /* スピードを一定にする */
  
  /* ↓ ↓ ↓ ここが無限ループの設定 ↓ ↓ ↓ */
  animation-iteration-count: infinite; /* ★繰り返し回数を「無限」に設定 */
  animation-direction: alternate; /* ★端まで行ったら逆再生して戻る */
}
動くよ!

応用:アニメーションの「遅延」と「繰り返し回数」を制御するコツ

アニメーションにリズムやバリエーションを持たせるための応用設定です。

① アニメーションの開始を遅らせる (animation-delay)
要素が表示されてから少し時間差をおいてアニメーションを始めたい場合に設定します。

.box {
  /* ...他の設定... */
  animation-delay: 0.5s; /* ★0.5秒待ってから再生開始 */
}

② 繰り返し回数を指定する (animation-iteration-count)
無限ではなく、「3回だけ繰り返したい」といった具体的な回数を指定できます。

.box {
  /* ...他の設定... */
  animation-iteration-count: 3; /* ★アニメーションをちょうど3回繰り返す */
}

これらの設定を駆使することで、複数の要素を動かす際のタイミングをずらし、洗練された演出を作り出せます。

動かない時の確認事項

コードを書いても動かない場合は、以下の3点を確認してください。

  • 名称の一致: @keyframes の名前と animation-name が完全に一致しているか(大文字・小文字も区別されます)。
  • 再生時間の設定: animation-duration が指定されているか。未指定(0秒)だと実行されません。
  • プロパティの選定: opacitytransform など、数値で変化を計算できるプロパティを使用しているか。

animation プロパティの利点

単純な状態変化(transition)と違い、以下の制御が可能になります。

  • 自動再生とループ: ページ読み込み時の実行や、無限に繰り返す動き。
  • 複数の中継地点: 0%から100%の間に中継点(50%など)を増やし、多段階の動きを作れる。
  • 終了状態の保持: 実行後に元の状態に戻さず、最後のコマの状態で静止させられる。

アニメーションの関連リンク

animationプロパティを一括指定で書く方法

アニメーションを一時停止・再開する方法

animation-timing-functionの違いを確認

タイトルとURLをコピーしました