CSS Animations (@keyframes)
@keyframes でアニメーションのステップを定義し、animation プロパティで要素に適用する。duration・timing-function・delay・iteration-count などを細かく制御でき、JS なしで複雑なアニメーションが実現できる。すべての主要ブラウザで長年サポートされている。
概要
@keyframes でアニメーションのステップを定義し、animation プロパティで要素に適用する。duration・timing-function・delay・iteration-count などを細かく制御でき、JS なしで複雑なアニメーションが実現できる。すべての主要ブラウザで長年サポートされている。
対応ブラウザ
デスクトップ
Chrome 43+
Edge 12+
Safari 9+
Firefox 16+
モバイル
Chrome Android 43+
Safari iOS 9+
Firefox Android 16+
基本構文
CSS
/* バウンドするアニメーション */
@keyframes bounce {
0%, 100% {
transform: translateY(0);
}
50% {
transform: translateY(-30px);
}
}
.ball {
animation: bounce 0.8s ease-in-out infinite;
}
/* 回転アニメーション */
@keyframes spin {
from { transform: rotate(0deg); }
to { transform: rotate(360deg); }
}
.spinner {
animation: spin 1.5s linear infinite;
}
/* パルスアニメーション */
@keyframes pulse {
0%, 100% { opacity: 1; }
50% { opacity: 0.4; }
}
.loading {
animation: pulse 1.5s ease-in-out infinite;
} 実務での使いどころ
-
ローディングアニメーション
スピナーやプログレスバーなど、繰り返しのアニメーションをCSSだけで実装できる。
-
注目を引くUI演出
要素の出現時にフェードインやスライドインを加え、ユーザーの視線を誘導する。
注意点
- 過度なアニメーションはユーザー体験を損なうため、必要最小限にとどめる。
- prefers-reduced-motion メディアクエリでアニメーションを無効化できるようにする。
アクセシビリティ
- prefers-reduced-motion: reduce に対応し、動きに敏感なユーザーへの配慮を行う。