
CodePenで公開されている、CSSやJavaScriptで作られたモーダルウィンドウのアイデアを10個セレクトしました。シンプルなオーバーレイ表示から、GSAPで物理的な動きを加えたもの、ドラッグで動かせるものまで、幅広いバリエーションを集めています。各スニペットには実装のポイントも添えているので、どんな仕組みで動いているのか、どこを見ればカスタマイズできるのかが把握しやすくなっています。気になるデザインが見つかったら、実際のサイト制作の参考にしてみてください。
モーダルウィンドウのアイデア
Modal Dialog
jQueryで実装するシンプルなモーダルウィンドウ
See the Pen Modal Dialog by David Fitas (@dfitzy) on CodePen.
- Author : David Fitas
- Link : CodePen – Demo
💡 実装のポイント
jQueryで.modal_infoの中身を丸ごと.detach()し、動的生成した.modalへ差し込む設計。開閉は.modal・.modal_overlayに付与される.displayクラスのopacityとvisibilityをtransitionさせるだけとシンプル。閉じるボタンは:hoverでtransform: rotate(360deg) scale(1.1)というくるっと回る演出付き。中央寄せはcenter()関数内でwindowの高さとmodal.outerHeight()の差分から計算している。
Simple.com style modal window
全画面スライド式のモーダルメニュー
See the Pen Simple.com style modal window by Casey Zumwalt (@zumwalt) on CodePen.
- Author : Casey Zumwalt
- Link : CodePen – Demo
💡 実装のポイント.menu.openに切り替わると@-webkit-keyframes riseで画面下から立ち上がり、左右2分割の背景である.left・.rightがgrowkeyframesで幅1pxから50%へ伸びることで本を開くような演出になっている。閉じる際は.closingクラスを付けてfallアニメーション(3秒)を再生してから、jQueryの.delay().queue()で.open・.closingクラスを外すタイミング調整がポイント。
Morphing Modal Window
ボタンが円形に変形して展開するモーダルウィンドウ
See the Pen Morphing Modal Window by CodyHouse (@codyhouse) on CodePen.
- Author : CodyHouse
- Link : CodePen – Demo
💡 実装のポイント
ボタンをクリックすると.to-circleクラスで丸型に変形し、続けて円形の背景レイヤー.cd-modal-bgをVelocity.jsのscaleアニメーションでウィンドウ全体を覆うサイズまで拡大する2段階構成。拡大率はscaleValue()関数でボタン位置から画面四隅までの最大距離を計算して算出している。閉じる際はEscキーにも対応(keyupイベントで監視)。
Modal Animation Physics
物理的な弾みを感じさせるモーダルアニメーション
See the Pen Modal Animation Physics by Tey Tag (@pix3l) on CodePen.
- Author : Tey Tag
- Link : CodePen – Demo
💡 実装のポイント.modal-frameに.state-appear/.state-leaveを切り替えることで、SCSSのmodalComeIn(65.5%地点でscale(1.03)にオーバーシュートしてから1に収束)というバウンド感のあるkeyframesを再生。.modal-bodyはopacityとtransformを別途transitionさせているため、外枠と中身の登場タイミングがずれて見える演出になっている。アニメーション終了後は.state-leaveクラスを除去する後処理がJS側に必要。
Modal popup animation with GSAP & Tailwindcss
GSAPとTailwindcssで作るモーダルポップアップ
See the Pen Modal popup animation with GSAP & Tailwindcss by artisticMK (@artisticMK) on CodePen.
- Author : artisticMK
- Link : CodePen – Demo
💡 実装のポイント
CSSは書かず、Tailwind CSSのユーティリティクラスのみでレイアウトを構成。開閉はgsap.timeline()で#authOverlay→#second→#third→#fourthの順にscaleYやopacityを微妙にオフセット("-=0.4"など)させながら連続再生する構成で、各要素の登場タイミングをずらすことで奥行きのある演出になっている。閉じる際はauthAnimation.reverse().timeScale(-1.6)でタイムラインを逆再生・倍速化しているだけなので実装はシンプル。
Modal Animations
7種類のモーダル出現パターンを比較できるアイデア集
See the Pen Modal Animations by Jesse Couch (@designcouch) on CodePen.
- Author : Jesse Couch
- Link : CodePen – Demo
💡 実装のポイント
7種類の出現パターン(Unfolding/Revealing/Uncovering/Blow Up/Meep Meep/Sketch/Bond)が#modal-containerの.one〜.sevenクラスにそれぞれ独立したkeyframesとして定義されている大規模なSCSS構成。Sketchパターンだけは<svg><rect>のstroke-dashoffsetをアニメーションさせて枠線を描画する仕組みなので、抜き出す際はSVGごとコピーする必要がある。JSはボタンのidをそのままクラス名として付け替えているだけのシンプルな仕組み。
Moving a modal with GSAP Draggable & Tailwind CSS
ドラッグで自由に動かせるモーダルウィンドウ
See the Pen Moving a modal with GSAP Draggable & Tailwind CSS by Jorge Cheevers (@jorgecheevers) on CodePen.
- Author : Jorge Cheevers
- Link : CodePen – Demo
💡 実装のポイント
GSAPのDraggableプラグインでモーダル自体をドラッグ移動できるようにした変わり種。bounds: wrapperで移動範囲を親要素内に制限し、inertia: trueとthrowResistanceで指を離した後の慣性が効くようになっている。リセットボタンはTweenLite.toでxPercent/yPercentを初期値(中央寄せの-50, -50)に戻すだけのシンプルな実装。
Responsive Image Gallery with jQuery Lightbox
画像をクリックすると拡大表示されるライトボックス式モーダル
See the Pen Responsive Image Gallery with jQuery Lightbox by Melinda Golden (@mmgolden) on CodePen.
- Author : Melinda Golden
- Link : CodePen – Demo
💡 実装のポイント
画像専用のライトボックス型モーダル。$('<div id="overlay"></div>')をjQueryで動的に生成してページに追加し、クリックされた画像のhref属性から拡大表示用の画像パスを取得する仕組み。次へ・前へボタンは.closest('.image').next()/.prev()でDOM上の兄弟要素を辿って画像を切り替えているだけなので、配列を持たずに実装できている点が参考になる。
Responsive Photo Gallery Grid with Lightbox and – No Script
CSS Grid・Flexboxで作るスクリプト不要のライトボックスギャラリー
See the Pen Responsive Photo Gallery Grid with Lightbox and – No Script by alchatti (@alchatti) on CodePen.
- Author : alchatti
- Link : CodePen – Demo
💡 実装のポイント
このPenはBot対策によりソースコードの直接取得ができませんでした。検索結果によると、CSS GridとFlexboxのみで構成されJavaScriptを一切使わない(:target疑似クラスを利用したCSSのみの実装と思われる)ライトボックスギャラリーとのことです。詳細な実装はCodePen上のPenで直接ご確認ください。
Gsap FLIP – Lightbox
GSAP FLIPで画像がなめらかに拡大するライトボックス
See the Pen Gsap FLIP – Lightbox by Romain (@romaingranai) on CodePen.
- Author : Romain
- Link : CodePen – Demo
💡 実装のポイント
GSAPのFlipプラグインを使ったモダンな実装。Flip.getState()でクリックされた画像の現在位置・サイズを記録し、DOM上で.lightboxへ要素そのものを移動させた後にFlip.from()で「移動前の状態」から現在位置へアニメーションさせるFLIPテクニック(First・Last・Invert・Play)。画像を複製せず実要素を移動させるだけなので、CSSのbackdrop-filter: blur()と組み合わせて軽量に動作する。
モーダルウィンドウとは?
モーダルウィンドウとは、Webページ上に重ねて表示される小さなウィンドウのことで、ユーザーに特定の操作や情報の確認を促すために使われるUIパーツです。背景を暗く覆うオーバーレイと組み合わせて表示されることが多く、モーダルウィンドウを閉じるまで背後のページ操作をブロックする点が特徴です。
ログインフォームや利用規約の確認、画像の拡大表示、フォーム送信後の完了メッセージなど、幅広い用途で利用されています。CSSアニメーションやJavaScriptライブラリと組み合わせることで、フェードインやスライド、ズームなど様々な演出を加えることができます。
CodePenとは?
CodePenは、HTML、CSS、JavaScriptを使ってウェブページのプロトタイプや実装を行うことができるオンラインの開発環境です。
CodePenでは、ウェブ開発者やデザイナーが、ブラウザ上でコードを書きながら、すばやく試行錯誤することができます。ユーザーは自分のプロジェクトを公開し、他のユーザーによるフィードバックを受けたり、共有することもできます。
CodePenには、エディター機能が搭載されており、HTML、CSS、JavaScriptのコードを入力することができます。また、ユーザーが公開したプロジェクトは、フロントエンドの技術を利用して動的な表現やアニメーションを作ることができます。
よくある質問
-
SCSSで書かれているコードはそのまま使えますか?
そのままでは動作しません。SCSSはコンパイルが必要なため、Sassのビルド環境がない場合はCodePen上の「View Compiled CSS」から通常のCSSを書き出して使用してください。
-
モーダルを開いている間、背景のスクロールを止めるにはどうすればいいですか?
モーダルを開くタイミングで
body要素にoverflow: hiddenを付与するクラスをJavaScriptで切り替えるのが一般的です。今回紹介したPenの中にも、開閉時にbodyへクラスをtoggleしている実装があります。 -
GSAPなどのライブラリを使っているPenはそのまま利用できますか?
利用できますが、GSAP本体(および使用しているプラグイン)を別途読み込む必要があります。CodePenの「JS」パネルでは外部リソースとして読み込まれているので、実際のサイトに組み込む際はCDNのscriptタグを忘れずに追加してください。
-
モーダルウィンドウはアクセシビリティ的に問題ありませんか?
実装によってはキーボード操作やスクリーンリーダーへの配慮が不足している場合があります。フォーカスをモーダル内に留める、Escキーで閉じられるようにする、
aria-modal="true"やrole="dialog"を付与するなどの対応を追加で検討することをおすすめします。