
ドロップダウンメニューのアニメーションを実装したい……



ナビゲーションやリストをもっと魅力的にしたい……
今回はこのようなお悩みをお持ちの方へ向けて
Web制作において人気の高いUI要素
ドロップダウンメニューのアニメーション
をご紹介します。
5種類のドロップダウンアニメーションを完全網羅した実装なので、いままさに「ドロップダウンを実装しないといけない!」という方は丸っとコピペしてどうぞご活用ください!
- スライドダウン(定番の下方向展開)
- フェード(ふわっと表示)
- スケール(拡大しながら表示)
- 左右スライド(横から出現)
- 複合アニメーション(応用テク)



特にグローバルナビゲーションやフォームの選択肢には、ドロップダウンアニメーションが非常に効果的です。この記事のコードをご活用いただきWeb制作の効率化に繋がれば何よりです!
なお、今回ご紹介するアニメーションはCSSのみまたはCSS+JavaScriptで実装できるので、初心者の方でも安心してご利用いただけます。
あわせて読みたい
ドロップダウンアニメーションとは
ドロップダウンアニメーションは、メニューやリストがユーザー操作に応じて滑らかに表示・非表示されるアニメーション効果です。視覚的なフィードバックを与え、UIの使いやすさと印象を大きく向上させます。
効果的な使用場面
適している場面
- グローバルナビゲーション
- サブメニュー
- フォームの選択肢
- ユーザーメニュー
- モバイルメニュー
避けるべき場面
- 重要な情報の即時表示が必要な場面
- アクセシビリティを重視する場面(代替手段が必要)
- 頻繁な表示/非表示でパフォーマンスが気になる場合
実装方法の比較
アニメーション | 難易度 | 視覚的インパクト | パフォーマンス | ブラウザ対応 |
---|---|---|---|---|
スライドダウン | ⭐ | ⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ |
フェード | ⭐ | ⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ |
スケール | ⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ |
左右スライド | ⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ |
複合 | ⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐⭐ |
スライドダウン
① デモ
See the Pen 【ドロップダウンメニュー】スライドダウン by ケケンタ (@lgshifbg-the-looper) on CodePen.
- 定番の下方向展開
- シンプルで分かりやすい
- すべてのブラウザで対応
② HTML
<button class="dropdown-toggle">メニューを開く</button>
<ul class="dropdown-menu">
<li><a href="#">メニュー1</a></li>
<li><a href="#">メニュー2</a></li>
<li><a href="#">メニュー3</a></li>
</ul>
③ CSS
.dropdown-menu {
max-height: 0;
overflow: hidden;
transition: max-height 0.4s cubic-bezier(0.4, 0, 0.2, 1);
background: #fff;
box-shadow: 0 4px 16px rgba(0,0,0,0.08);
border-radius: 8px;
margin: 0;
padding: 0;
list-style: none;
}
.dropdown-menu.show {
max-height: 300px;
}
.dropdown-menu li a {
display: block;
padding: 1rem 2rem;
color: #333;
text-decoration: none;
transition: background 0.2s;
}
.dropdown-menu li a:hover {
background: #f0f4fa;
}
④ JavaScript
document.querySelector('.dropdown-toggle').addEventListener('click', function() {
document.querySelector('.dropdown-menu').classList.toggle('show');
});
⑤ カスタマイズ例
/* アニメーション時間を変更 */
.dropdown-menu {
transition: max-height 0.7s cubic-bezier(0.68, -0.55, 0.265, 1.55);
}
フェード
① デモ
See the Pen 【ドロップダウンメニュー】フェード by ケケンタ (@lgshifbg-the-looper) on CodePen.
- ふわっと表示
- 軽やかな印象
- シンプルな実装
② HTML
<button class="dropdown-toggle">メニューを開く</button>
<ul class="dropdown-menu-fade">
<li><a href="#">メニュー1</a></li>
<li><a href="#">メニュー2</a></li>
<li><a href="#">メニュー3</a></li>
</ul>
③ CSS
.dropdown-menu-fade {
opacity: 0;
visibility: hidden;
transition: opacity 0.3s, visibility 0.3s;
background: #fff;
box-shadow: 0 4px 16px rgba(0,0,0,0.08);
border-radius: 8px;
margin: 0;
padding: 0;
list-style: none;
}
.dropdown-menu-fade.show {
opacity: 1;
visibility: visible;
}
.dropdown-menu-fade li a {
display: block;
padding: 1rem 2rem;
color: #333;
text-decoration: none;
transition: background 0.2s;
}
.dropdown-menu-fade li a:hover {
background: #f0f4fa;
}
④ JavaScript
document.querySelector('.dropdown-toggle').addEventListener('click', function() {
document.querySelector('.dropdown-menu-fade').classList.toggle('show');
});
⑤ カスタマイズ例
/* 遅いフェード */
.dropdown-menu-fade {
transition: opacity 0.7s, visibility 0.7s;
}
スケール
① デモ
See the Pen 【ドロップダウンメニュー】スケール by ケケンタ (@lgshifbg-the-looper) on CodePen.
- 拡大しながら表示
- モダンな印象
- 立体感を演出
② HTML
<button class="dropdown-toggle">メニューを開く</button>
<ul class="dropdown-menu-scale">
<li><a href="#">メニュー1</a></li>
<li><a href="#">メニュー2</a></li>
<li><a href="#">メニュー3</a></li>
</ul>
③ CSS
.dropdown-menu-scale {
transform: scaleY(0);
transform-origin: top;
transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1);
background: #fff;
box-shadow: 0 4px 16px rgba(0,0,0,0.08);
border-radius: 8px;
margin: 0;
padding: 0;
list-style: none;
}
.dropdown-menu-scale.show {
transform: scaleY(1);
}
.dropdown-menu-scale li a {
display: block;
padding: 1rem 2rem;
color: #333;
text-decoration: none;
transition: background 0.2s;
}
.dropdown-menu-scale li a:hover {
background: #f0f4fa;
}
④ JavaScript
document.querySelector('.dropdown-toggle').addEventListener('click', function() {
document.querySelector('.dropdown-menu-scale').classList.toggle('show');
});
⑤ カスタマイズ例
/* X方向拡大 */
.dropdown-menu-scale {
transform: scaleX(0);
transform-origin: left;
}
.dropdown-menu-scale.show {
transform: scaleX(1);
}
左右スライド
① デモ
See the Pen 【ドロップダウンメニュー】左右スライド by ケケンタ (@lgshifbg-the-looper) on CodePen.
- 横から出現
- サイドメニュー風にも応用可
- インパクト大
② HTML
<button class="dropdown-toggle">メニューを開く</button>
<ul class="dropdown-menu-slide">
<li><a href="#">メニュー1</a></li>
<li><a href="#">メニュー2</a></li>
<li><a href="#">メニュー3</a></li>
</ul>
③ CSS
.dropdown-menu-slide {
transform: translateX(-100%);
opacity: 0;
transition: transform 0.4s cubic-bezier(0.4, 0, 0.2, 1), opacity 0.4s;
background: #fff;
box-shadow: 0 4px 16px rgba(0,0,0,0.08);
border-radius: 8px;
margin: 0;
padding: 0;
list-style: none;
}
.dropdown-menu-slide.show {
transform: translateX(0);
opacity: 1;
}
.dropdown-menu-slide li a {
display: block;
padding: 1rem 2rem;
color: #333;
text-decoration: none;
transition: background 0.2s;
}
.dropdown-menu-slide li a:hover {
background: #f0f4fa;
}
④ JavaScript
document.querySelector('.dropdown-toggle').addEventListener('click', function() {
document.querySelector('.dropdown-menu-slide').classList.toggle('show');
});
⑤ カスタマイズ例
/* 右から出現 */
.dropdown-menu-slide {
transform: translateX(100%);
}
.dropdown-menu-slide.show {
transform: translateX(0);
}
複合アニメーション
① デモ
See the Pen 【ドロップダウンメニュー】複合アニメーション by ケケンタ (@lgshifbg-the-looper) on CodePen.
- スケール+フェードなどの応用
- 高級感・リッチな印象
- サブメニューやモーダルにも応用可
② HTML
<button class="dropdown-toggle">メニューを開く</button>
<ul class="dropdown-menu-combo">
<li><a href="#">メニュー1</a></li>
<li><a href="#">メニュー2</a></li>
<li><a href="#">メニュー3</a></li>
</ul>
③ CSS
.dropdown-menu-combo {
opacity: 0;
transform: scale(0.95) translateY(-10px);
transition: opacity 0.3s, transform 0.3s;
background: #fff;
box-shadow: 0 4px 16px rgba(0,0,0,0.08);
border-radius: 8px;
margin: 0;
padding: 0;
list-style: none;
}
.dropdown-menu-combo.show {
opacity: 1;
transform: scale(1) translateY(0);
}
.dropdown-menu-combo li a {
display: block;
padding: 1rem 2rem;
color: #333;
text-decoration: none;
transition: background 0.2s;
}
.dropdown-menu-combo li a:hover {
background: #f0f4fa;
}
④ JavaScript
document.querySelector('.dropdown-toggle').addEventListener('click', function() {
document.querySelector('.dropdown-menu-combo').classList.toggle('show');
});
⑤ カスタマイズ例
/* より強いスケール感 */
.dropdown-menu-combo {
transform: scale(0.8) translateY(-20px);
}
.dropdown-menu-combo.show {
transform: scale(1) translateY(0);
}
まとめ



今回ご紹介した5種類のドロップダウンアニメーションはいかがでしたでしょうか?
それぞれのアニメーション効果には特徴があり、用途に応じて使い分けることで、より魅力的なWebサイトを作成できます。
用途別おすすめアニメーション
- グローバルナビ: スライドダウン or フェード
- サブメニュー: スケール or 複合
- フォーム選択肢: フェード or スライド
- ユーザーメニュー: 複合 or スケール
パフォーマンスのポイント
- アニメーション時間は300ms前後を推奨
transform
やopacity
を活用してGPU加速- 過度なアニメーションは避ける
- アクセシビリティを考慮する
カスタマイズのコツ
- 色やサイズを調整してサイトのテーマに合わせる
- イージング関数を調整して自然な動きを実現
- レスポンシブ対応を忘れずに



これらのドロップダウンアニメーションを組み合わせることで、さらに魅力的なインターフェースを作成できます。ぜひご自身のプロジェクトに合わせてカスタマイズしてみてください!
あわせて読みたい
コメント