1. はじめに
- CSSトランジションとは?
- CSSトランジションは、要素の状態が変化するときに、変化の過程をスムーズに行う効果を提供します。
- 通常、プロパティの変更は即座に行われますが、トランジションを使うことで、変化がアニメーションのように滑らかに行われます。
- CSSトランジションの用途
- ボタンのホバー効果
- メニューのアニメーション
- 表示/非表示のスムーズな切り替え
- ユーザーの操作感を向上させる
- この記事のゴール
- CSSトランジションの基本から応用まで理解し、実際に効果的なアニメーションを作成できるようになる。
🎬 2. CSSトランジションの基本
① トランジションの構文
トランジションは、次の4つのプロパティで構成されます。
cssコードをコピーするtransition: [プロパティ] [時間] [タイミング関数] [遅延];
プロパティ | 説明 |
---|---|
transition-property | 変更をアニメーションさせたいCSSプロパティ |
transition-duration | アニメーションの持続時間 (例: 1s ) |
transition-timing-function | アニメーションの加速・減速のタイミング (例: ease ) |
transition-delay | アニメーションの遅延時間 (例: 0.5s ) |
② 簡単な例
/* 通常状態 */
button {
background-color: #4caf50;
color: white;
padding: 10px 20px;
border-radius: 5px;
transition: background-color 0.3s ease;
}
/* ホバー時 */
button:hover {
background-color: #45a049;
}
- 解説
- ボタンがホバーされると、背景色が
0.3秒
で変わります。 transition: background-color 0.3s ease;
によって、色が滑らかに変化します。
- ボタンがホバーされると、背景色が
💡 3. トランジションプロパティの詳細
① transition-property
アニメーションさせるプロパティを指定します。複数指定することも可能です。
transition-property: background-color, transform;
② transition-duration
アニメーションの所要時間を指定します。単位は秒(s
)またはミリ秒(ms
)で指定します。
transition-duration: 0.5s;
③ transition-timing-function
アニメーションの速度の変化を指定します。主な関数には以下があります。
ease
: 初めは遅く、途中で速く、終わりは遅くlinear
: 一定の速度ease-in
: 初めは遅く、最後に速くease-out
: 最初は速く、最後に遅くease-in-out
: 初めと終わりは遅く、途中は速く
transition-timing-function: ease-out;
④ transition-delay
アニメーションの開始を遅らせます。
transition-delay: 0.5s;
🎥 4. 実践的なトランジション効果
① ボタンホバー時に色が変わるエフェクト
button {
background-color: #3498db;
color: white;
padding: 10px 20px;
border-radius: 5px;
border: none;
transition: background-color 0.4s ease, transform 0.2s ease;
}
button:hover {
background-color: #2980b9;
transform: scale(1.1);
}
- 効果
- ボタンの背景色が
0.4秒
で変化し、少し拡大する(scale(1.1)
)ことで、ユーザーの目を引きます。
- ボタンの背景色が
② メニューのスライドインエフェクト
.navbar {
width: 0;
overflow: hidden;
transition: width 0.5s ease;
}
.navbar.open {
width: 250px;
}
- HTML
<button onclick="toggleMenu()">メニュー</button>
<div class="navbar">
<ul>
<li>Home</li>
<li>About</li>
<li>Contact</li>
</ul>
</div>
- JavaScript
function toggleMenu() {
document.querySelector('.navbar').classList.toggle('open');
}
🧩 5. 応用テクニック
① 複数プロパティを一度にアニメーションさせる
button {
background-color: #3498db;
color: white;
padding: 10px 20px;
border-radius: 5px;
border: none;
transition: background-color 0.3s ease, transform 0.3s ease, opacity 0.3s ease;
}
button:hover {
background-color: #2980b9;
transform: scale(1.1);
opacity: 0.8;
}
② 透明度と移動を組み合わせたアニメーション
.card {
opacity: 0;
transform: translateY(20px);
transition: opacity 0.5s ease-out, transform 0.5s ease-out;
}
.card.visible {
opacity: 1;
transform: translateY(0);
}
window.addEventListener('scroll', function() {
const card = document.querySelector('.card');
const cardPosition = card.getBoundingClientRect().top;
const windowHeight = window.innerHeight;
if (cardPosition < windowHeight) {
card.classList.add('visible');
}
});
🧠 6. よくあるエラーと解決策
- アニメーションが動かない
→ 変更をアニメーションさせるプロパティが指定されていない場合や、transition
の記述ミスを確認。 - トランジションが途中で止まる
→transition
プロパティが複数ある場合、順番や指定のミスがないか確認。 - トランジションが滑らかでない
→transition-timing-function
を調整してみる。ease
やease-in-out
が効果的。
🚀 7. まとめ
- CSSトランジションは、ユーザーの操作に対してスムーズなアニメーションを提供するツールです。
- プロパティ、時間、タイミング、遅延を組み合わせて、自然な動きを実現できます。
- ボタン、メニュー、カードの表示など、さまざまな要素にトランジションを適用することで、Webサイトの操作感を向上させましょう!