1. はじめに
- CSSアニメーションとは?
- CSSのアニメーション機能を使えば、要素に動きを加え、ユーザー体験を向上させることができる。
- JavaScriptを使わずに、滑らかな動きやインタラクティブな効果を実現可能。
- CSSアニメーションの用途
- ボタンのホバー効果
- ページロード時のアニメーション
- スクロール時の動き
- この記事のゴール
- CSSアニメーションの基本的な使い方を理解し、実践的なテクニックを習得する。
🎬 2. CSSアニメーションの基本
① アニメーションの構文
CSSアニメーションは主に以下の2つで構成される:
@keyframes
:アニメーションの動きを定義- アニメーションプロパティ:アニメーションの詳細を指定
テスト1
基本構文
@keyframes animationName {
from {
opacity: 0;
}
to {
opacity: 1;
}
}
.element {
animation: animationName 2s ease-in-out infinite;
}
② アニメーションの主なプロパティ
プロパティ | 説明 | 例 |
---|---|---|
animation-name | 使用する@keyframes の名前 | animation-name: fadeIn; |
animation-duration | アニメーションの時間 | animation-duration: 2s; |
animation-timing-function | 動きの加速・減速 | animation-timing-function: ease; |
animation-delay | 開始までの遅延時間 | animation-delay: 1s; |
animation-iteration-count | 繰り返し回数 | animation-iteration-count: infinite; |
animation-direction | 再生方向 | animation-direction: alternate; |
🎥 3. 基本的なアニメーション例
① フェードインアニメーション
テスト2
@keyframes fadeIn {
from {
opacity: 0;
}
to {
opacity: 1;
}
}
.fade-in {
animation: fadeIn 2s ease-in-out;
}
② スライドインアニメーション
@keyframes slideIn {
from {
transform: translateX(-100%);
}
to {
transform: translateX(0);
}
}
.slide-in {
animation: slideIn 1s ease-out;
}
③ 回転アニメーション
@keyframes rotate {
from {
transform: rotate(0deg);
}
to {
transform: rotate(360deg);
}
}
.rotate {
animation: rotate 3s linear infinite;
}
🛠️ 4. 実践的なアニメーションデザイン
① ボタンホバーエフェクト
.button {
background: #4caf50;
color: white;
padding: 10px 20px;
border-radius: 5px;
transition: transform 0.3s ease;
}
.button:hover {
transform: scale(1.1);
}
② ページロード時のアニメーション
@keyframes fadeInUp {
from {
opacity: 0;
transform: translateY(20px);
}
to {
opacity: 1;
transform: translateY(0);
}
}
.page-load {
animation: fadeInUp 1s ease-out;
}
③ 無限ループする背景アニメーション
@keyframes gradientMove {
0% {
background-position: 0% 50%;
}
100% {
background-position: 100% 50%;
}
}
.animated-bg {
background: linear-gradient(90deg, #ff7e5f, #feb47b);
background-size: 400% 400%;
animation: gradientMove 5s infinite alternate;
}
📐 5. アニメーションのタイミング関数
関数名 | 効果 |
---|---|
linear | 一定の速度 |
ease | ゆっくり始まり終わる |
ease-in | ゆっくり始まる |
ease-out | ゆっくり終わる |
ease-in-out | ゆっくり始まり、終わる |
例:ease-in-out
を使ったアニメーション
@keyframes bounce {
0%, 100% {
transform: translateY(0);
}
50% {
transform: translateY(-30px);
}
}
.bounce {
animation: bounce 1s ease-in-out infinite;
}
🐞 6. よくあるエラーと解決策
- アニメーションが動かない
→animation-name
と@keyframes
の名前が一致しているか確認。 - 遅延やタイミングが意図通りにならない
→animation-delay
やanimation-timing-function
を調整。 - 要素が不自然に動く
→transform-origin
を調整。
🚀 7. 応用テクニック
① 複数のアニメーションを組み合わせる
.animation-combo {
animation: fadeIn 2s ease-in-out, slideIn 1s ease-out;
}
② イベントトリガーアニメーション
.element:hover {
animation: bounce 0.5s ease-in-out;
}
🎓 8. まとめ
- CSSアニメーションはユーザー体験を向上させる重要な要素
- 基本プロパティや
@keyframes
を理解することが大切 - シンプルなアニメーションから複雑な動きまで、実践を重ねてスキルを磨こう!