モーダルウインドウのアニメーション5選 vol.1【HTML/CSS/JavaScript・サンプルコード付き】
html/css/js
2025.09.22
モーダルウインドウのアニメーション5選vol.1
HTML・CSS・JavaScriptを使って、モーダルウインドウのアニメーション5種類を実装する方法を紹介します。このサンプルでは、フェードイン・スライドアップ・ズームイン・フリップ・ローテートの表示方法をそれぞれ確認できます。サイトのデザインや演出に合わせて、好みのアニメーションを選びたい場合に便利です。
コードについて
本記事のコードはサンプルコードです。ご利用前に必ず動作確認を行ってください。
免責事項
本コードの利用により発生した損害について、当サイトは一切の責任を負いません。
デモ
モーダルウインドウのアニメーション5選
ボタンをクリックすると、それぞれ異なるアニメーションでモーダルを表示します。
モーダルタイトル
選択したアニメーションでモーダルウインドウを表示しています。
コードをコピーして使おう!
<!DOCTYPE html>
<html lang="ja">
<head>
<!-- 文字コードを指定します -->
<meta charset="UTF-8">
<!-- ページタイトルです -->
<title>モーダルウインドウのアニメーション5選vol.1</title>
<!-- CSSファイルを読み込みます -->
<link rel="stylesheet" href="style.css">
</head>
<body>
<!-- ① Fade モーダル -->
<section class="modal-animation-vol1_block">
<h2>① Fade(ふわっと表示)</h2>
<button class="modal-animation-vol1_button" type="button" data-modal-open="fade">
Fade モーダルを開く
</button>
</section>
<!-- ② Slide モーダル -->
<section class="modal-animation-vol1_block">
<h2>② Slide(下から表示)</h2>
<button class="modal-animation-vol1_button" type="button" data-modal-open="slide">
Slide モーダルを開く
</button>
</section>
<!-- ③ Zoom モーダル -->
<section class="modal-animation-vol1_block">
<h2>③ Zoom(拡大表示)</h2>
<button class="modal-animation-vol1_button" type="button" data-modal-open="zoom">
Zoom モーダルを開く
</button>
</section>
<!-- ④ Flip モーダル -->
<section class="modal-animation-vol1_block">
<h2>④ Flip(回転表示)</h2>
<button class="modal-animation-vol1_button" type="button" data-modal-open="flip">
Flip モーダルを開く
</button>
</section>
<!-- ⑤ Rotate モーダル -->
<section class="modal-animation-vol1_block">
<h2>⑤ Rotate(軽く回転表示)</h2>
<button class="modal-animation-vol1_button" type="button" data-modal-open="rotate">
Rotate モーダルを開く
</button>
</section>
<!-- モーダル背景です -->
<div class="modal-animation-vol1_overlay" data-modal-overlay>
<!-- モーダル本体です -->
<div class="modal-animation-vol1_modal" data-modal-box role="dialog" aria-modal="true">
<!-- モーダルタイトルです -->
<div class="modal-animation-vol1_modal-title" data-modal-title>
モーダルタイトル
</div>
<!-- モーダル本文です -->
<p class="modal-animation-vol1_modal-text" data-modal-text>
モーダル本文が入ります。
</p>
<!-- モーダルを閉じるボタンです -->
<button class="modal-animation-vol1_close" type="button" data-modal-close>
閉じる
</button>
</div>
</div>
<!-- JavaScriptファイルを読み込みます -->
<script src="script.js"></script>
</body>
</html>
/* ページ全体の基本設定です */
body{
margin:0;
font-family:sans-serif;
background:#ffffff;
color:#111827;
}
/* 各モーダルサンプルを囲むブロックです */
.modal-animation-vol1_block{
max-width:700px;
margin:24px auto;
padding:28px;
border:1px solid #e5e7eb;
border-radius:18px;
background:#f8fafc;
text-align:center;
}
/* モーダルを開くボタンです */
.modal-animation-vol1_button,
.modal-animation-vol1_close{
padding:10px 20px;
border:none;
border-radius:8px;
background:#0b6bff;
color:#ffffff;
font-weight:700;
cursor:pointer;
}
/* 閉じるボタンです */
.modal-animation-vol1_close{
background:#111827;
}
/* モーダル背景です */
.modal-animation-vol1_overlay{
display:none;
position:fixed;
inset:0;
z-index:9999;
background:rgba(0,0,0,0.5);
align-items:center;
justify-content:center;
padding:20px;
}
/* モーダル表示時の背景です */
.modal-animation-vol1_overlay.is-active{
display:flex;
}
/* モーダル本体です */
.modal-animation-vol1_modal{
width:100%;
max-width:430px;
padding:28px;
border-radius:18px;
background:#ffffff;
text-align:left;
box-shadow:0 20px 40px rgba(0,0,0,0.2);
}
/* モーダルタイトルです */
.modal-animation-vol1_modal-title{
font-size:22px;
font-weight:700;
margin-bottom:12px;
}
/* モーダル本文です */
.modal-animation-vol1_modal-text{
margin-bottom:24px;
color:#4b5563;
line-height:1.8;
}
/* ① Fade 表示です */
.modal-animation-vol1_overlay.is-active.fade .modal-animation-vol1_modal{
animation:modalFade 0.4s ease forwards;
}
/* ② Slide 表示です */
.modal-animation-vol1_overlay.is-active.slide .modal-animation-vol1_modal{
animation:modalSlide 0.4s ease forwards;
}
/* ③ Zoom 表示です */
.modal-animation-vol1_overlay.is-active.zoom .modal-animation-vol1_modal{
animation:modalZoom 0.4s ease forwards;
}
/* ④ Flip 表示です */
.modal-animation-vol1_overlay.is-active.flip .modal-animation-vol1_modal{
animation:modalFlip 0.4s ease forwards;
}
/* ⑤ Rotate 表示です */
.modal-animation-vol1_overlay.is-active.rotate .modal-animation-vol1_modal{
animation:modalRotate 0.4s ease forwards;
}
/* ① Fade の動きです */
@keyframes modalFade{
from{opacity:0;}
to{opacity:1;}
}
/* ② Slide の動きです */
@keyframes modalSlide{
from{opacity:0;transform:translateY(30px);}
to{opacity:1;transform:translateY(0);}
}
/* ③ Zoom の動きです */
@keyframes modalZoom{
from{opacity:0;transform:scale(0.85);}
to{opacity:1;transform:scale(1);}
}
/* ④ Flip の動きです */
@keyframes modalFlip{
from{
opacity:0;
transform:perspective(800px) rotateY(-90deg);
}
to{
opacity:1;
transform:perspective(800px) rotateY(0deg);
}
}
/* ⑤ Rotate の動きです */
@keyframes modalRotate{
from{opacity:0;transform:scale(0.9) rotate(-6deg);}
to{opacity:1;transform:scale(1) rotate(0);}
}
// モーダルを開くボタンをすべて取得します
const modalButtons=document.querySelectorAll('[data-modal-open]');
// モーダル背景を取得します
const modalOverlay=document.querySelector('[data-modal-overlay]');
// モーダルを閉じるボタンを取得します
const modalClose=document.querySelector('[data-modal-close]');
// モーダルタイトルを取得します
const modalTitle=document.querySelector('[data-modal-title]');
// モーダル本文を取得します
const modalText=document.querySelector('[data-modal-text]');
// アニメーションごとの表示内容です
const modalData={
fade:{
title:'① Fade モーダル',
text:'ふわっと表示するフェードインのモーダルです。'
},
slide:{
title:'② Slide モーダル',
text:'下からスライドして表示するモーダルです。'
},
zoom:{
title:'③ Zoom モーダル',
text:'少し小さい状態から拡大して表示するモーダルです。'
},
flip:{
title:'④ Flip モーダル',
text:'回転しながら表示するフリップモーダルです。'
},
rotate:{
title:'⑤ Rotate モーダル',
text:'軽く回転しながら表示するモーダルです。'
}
};
// モーダルを開く処理です
modalButtons.forEach(function(button){
button.addEventListener('click',function(){
const type=button.dataset.modalOpen;
modalTitle.textContent=modalData[type].title;
modalText.textContent=modalData[type].text;
modalOverlay.className='modal-animation-vol1_overlay is-active '+type;
});
});
// モーダルを閉じる処理です
modalClose.addEventListener('click',function(){
modalOverlay.className='modal-animation-vol1_overlay';
});
// 背景クリックでモーダルを閉じます
modalOverlay.addEventListener('click',function(event){
if(event.target===modalOverlay){
modalOverlay.className='modal-animation-vol1_overlay';
}
});
ファイル構成と設置方法
このサンプルでは、HTML・CSS・JavaScriptをそれぞれ別ファイルに分けて使用します。index.html、style.css、script.js を同じフォルダに配置してください。
sample/
├── index.html
├── style.css
└── script.js
index.html をブラウザで開くと、5種類のモーダルアニメーションを確認できます。各ボタンをクリックすると、Fade・Slide・Zoom・Flip・Rotate のいずれかの動きでモーダルウインドウが表示されます。
モーダルウインドウのアニメーション5選 vol.1【HTML/CSS/JavaScript・サンプルコード付き】
コメント