| この記事の要点 |
|
animation-iteration-count とは
animation-iteration-count は、CSS の @keyframes アニメーションを何回繰り返すかを指定するプロパティです。値を infinite にすると永続ループ、整数なら指定回数で停止します。
基本構文
.spinner {
animation-name: rotate;
animation-duration: 1s;
animation-iteration-count: infinite; /* 無限ループ */
animation-timing-function: linear;
}
@keyframes rotate {
from { transform: rotate(0deg); }
to { transform: rotate(360deg); }
}
取れる値
| 値 | 意味 |
|---|---|
1(初期値) | 1 回だけ実行して停止 |
3 | 3 回繰り返して停止 |
infinite | 無限ループ |
2.5 | 2 回 + 半分で停止(途中停止) |
0 | 実行されない |
inherit / initial / unset | CSS 共通キーワード |
注: 負の値は無効。小数を指定するとキーフレームの途中で停止するため、終端と途中の見た目が違うと中途半端な状態で固まる点に注意。
複数アニメーションに個別指定
カンマ区切りで複数のアニメーションを動かす際は、animation-iteration-count もカンマ区切りで個別指定できます。
.combo {
animation-name: rotate, fade;
animation-duration: 2s, 1s;
animation-iteration-count: infinite, 3; /* rotate=無限 / fade=3回 */
}
animation ショートハンドでの記述
/* duration / timing / delay / iteration-count / direction / fill-mode / play-state / name */
.spinner {
animation: 1s linear 0s infinite normal none running rotate;
}
/* 必要最小限の書き方 */
.spinner-min {
animation: rotate 1s linear infinite;
}
関連プロパティ
| プロパティ | 役割 |
|---|---|
animation-name | @keyframes 名 |
animation-duration | 1 周期の時間 |
animation-delay | 開始遅延 |
animation-timing-function | イージング(ease / linear / cubic-bezier(...)) |
animation-direction | 方向(normal / reverse / alternate) |
animation-fill-mode | 終了後の状態(forwards / backwards) |
animation-play-state | running / paused |
典型例:ローディングスピナー
.loader {
width: 32px; height: 32px;
border: 4px solid #eee;
border-top-color: #3498db;
border-radius: 50%;
animation: spin 0.8s linear infinite;
}
@keyframes spin {
to { transform: rotate(360deg); }
}
典型例:3 回だけバウンドして停止
.bounce {
animation: bounce 0.5s ease-in-out 3 alternate forwards;
}
@keyframes bounce {
from { transform: translateY(0); }
to { transform: translateY(-20px); }
}
3 alternate で上下を 3 回、forwards で最終位置に固定。
animation-direction との組み合わせ
繰り返し回数は animation-direction と組み合わせると挙動が大きく変わります。同じキーフレームでも「1 往復で 2 回」とカウントされる点に注意してください。
| direction | count=2 の挙動 |
|---|---|
normal(既定) | 0→100% を 2 回 |
reverse | 100→0% を 2 回 |
alternate | 0→100% → 100→0%(1 往復で完了) |
alternate-reverse | 100→0% → 0→100%(1 往復で完了) |
animation-fill-mode との関係
有限の繰り返し回数を指定すると、アニメーション終了後の状態が問題になります。デフォルトでは開始前の状態に戻りますが、animation-fill-mode: forwards を指定すれば最終フレームの状態を保持できます。ローディングが完了して結果に切り替わるような UI では forwards がほぼ必須です。
アクセシビリティ:prefers-reduced-motion
無限ループのアニメーションは、めまいや前庭障害のあるユーザーに負担になります。OS の「視差効果を減らす」設定を尊重して、必要な場合だけアニメーションを止めましょう。
@media (prefers-reduced-motion: reduce) {
.spinner {
animation-iteration-count: 1; /* 1 回で止める */
}
}
JavaScript で動的に変更
const el = document.querySelector('.spinner');
// 一時停止
el.style.animationPlayState = 'paused';
// 繰り返し回数を動的に変更
el.style.animationIterationCount = 'infinite';
// アニメーション終了イベント(infinite では発火しない)
el.addEventListener('animationend', () => console.log('done'));
まとめ
animation-iteration-countはアニメーションの繰り返し回数- 値は整数 / infinite / 小数。初期値は
1 - カンマ区切りで複数アニメーションに個別指定
- ショートハンド
animationにも含められる - アクセシビリティ配慮で
prefers-reduced-motionを尊重
関連
- @keyframes — アニメーションのフレーム定義
- animation-duration プロパティ — 1 周期の長さ
- animation-timing-function プロパティ — イージング
- animation-direction プロパティ — 再生方向
- animation ショートハンド — 一括指定
子ページ
子ページはありません
同階層のページ
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript で base URL を取得する方法|window.location.origin
- 4 YouTube Data API v3 エラー一覧|403・400・404 の原因と対処
- 5 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 6 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 7 Spring Frameworkのアノテーション一覧
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- プロジェクトをTomcatプロジェクトとして認識させる方法 2026-10-07 22:32:50
- MySQLの1366 Incorrect string value|Laravelの文字コード・絵文字エラー 2026-10-07 21:54:03
- curlの証明書ホスト名不一致|旧エラー51・現行60の確認と対処 2026-10-07 21:54:03
- LaravelのMassAssignmentException|fillableの原因と安全な対処 2026-10-07 21:54:03
- Eclipse で Tomcat の起動ログがコンソールに出ない時の確認手順 2026-10-07 21:54:02
- MySQLにおける中央値(Median)の導き方(バージョン8未満) 2026-10-07 13:49:45
- getInputForward 2026-10-07 13:41:15
- JSONから配列に変換 2026-10-07 13:41:15
- ビューから値をモデルに格納しコントローラーで受け取る方法 2026-10-07 13:23:41
- Laravelのテーブル作成と定義変更|マイグレーション・up/down・注意点 2026-10-07 13:23:41
- NumPy 配列に要素を追加する方法 (append / concatenate) 2026-10-07 13:23:41
- MariaDB・MySQLで現在日時を取得する方法|NOW・タイムゾーン・保存型 2026-10-07 13:13:36
- 【django】テンプレートで定数を使用する方法 2026-10-07 13:10:15
- Spring BootにおけるApplication.propertiesの環境依存設定の分割方法 2026-10-07 12:09:35
- Not supported for DML operations【Springエラー】 2026-10-07 11:09:38