モーダルウインドウを画面中央で拡大表示する方法【HTML/CSS/JavaScript・サンプルコード付き】
html/css/js
モーダルウインドウを画面中央で拡大表示する方法
HTML、CSS、JavaScriptを使って、画面中央へ拡大しながら表示されるモーダルウインドウを作る方法を紹介します。クリック時のアニメーションを追加して見栄えを向上させたい場合や、お知らせ、確認画面、画像表示、メニュー画面などを自然な演出で表示したい場合に利用できます。
コードについて
本記事のコードはサンプルコードです。ご利用前に必ず動作確認を行ってください。
免責事項
本コードの利用により発生した損害について、当サイトは一切の責任を負いません。
デモ
画面中央で拡大表示するモーダル
画像をクリックすると、画面中央に拡大表示されます。
コードをコピーして使おう!
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<!-- ページタイトル -->
<title>モーダルウインドウを画面中央で拡大表示</title>
<!-- CSS読み込み -->
<link rel="stylesheet" href="style.css">
</head>
<body>
<!-- デモエリア -->
<div class="center-zoom-modal-window_wrap">
<div class="center-zoom-modal-window_title">
画面中央で拡大表示するモーダル
</div>
<p class="center-zoom-modal-window_text">
画像をクリックすると、画面中央に拡大表示されます。
</p>
<!-- 拡大表示する画像ボタン -->
<button class="center-zoom-modal-window_open" type="button" data-zoom-open>
<img src="https://picsum.photos/seed/gal1/600/400" alt="森と湖(サンプル1)">
</button>
</div>
<!-- モーダル全体 -->
<div class="center-zoom-modal-window_overlay" data-zoom-overlay>
<!-- 拡大表示するモーダル本体 -->
<div class="center-zoom-modal-window_modal" role="dialog" aria-modal="true">
<!-- モーダルを閉じるボタン -->
<button class="center-zoom-modal-window_close" type="button" data-zoom-close aria-label="閉じる">
×
</button>
<img src="https://picsum.photos/seed/gal1/600/400" alt="森と湖(サンプル1)">
</div>
</div>
<!-- JavaScript読み込み -->
<script src="script.js"></script>
</body>
</html>
/* ページ全体 */
body{
margin:0;
font-family:sans-serif;
background:#ffffff;
}
/* デモエリア */
.center-zoom-modal-window_wrap{
max-width:700px;
margin:40px auto;
padding:32px;
border:1px solid #e5e7eb;
border-radius:18px;
background:#f8fafc;
text-align:center;
}
/* タイトル */
.center-zoom-modal-window_title{
font-size:22px;
font-weight:700;
margin-bottom:12px;
}
/* 説明文 */
.center-zoom-modal-window_text{
margin-bottom:24px;
color:#4b5563;
}
/* 拡大表示する画像ボタン */
.center-zoom-modal-window_open{
padding:0;
border:none;
border-radius:14px;
background:transparent;
cursor:pointer;
overflow:hidden;
}
/* 画像ボタン内の画像 */
.center-zoom-modal-window_open img{
display:block;
width:280px;
max-width:100%;
height:auto;
}
/* モーダル背景 */
.center-zoom-modal-window_overlay{
display:none;
position:fixed;
inset:0;
z-index:9999;
background:rgba(0,0,0,0.55);
align-items:center;
justify-content:center;
padding:20px;
}
/* モーダル表示時 */
.center-zoom-modal-window_overlay.is-active{
display:flex;
}
/* 拡大表示するモーダル本体 */
.center-zoom-modal-window_modal{
position:relative;
width:100%;
max-width:640px;
padding:18px;
border-radius:18px;
background:#ffffff;
box-shadow:0 20px 40px rgba(0,0,0,0.25);
transform:scale(0.7);
opacity:0;
transition:transform 0.25s,opacity 0.25s;
}
/* 表示時に中央で拡大する動き */
.center-zoom-modal-window_overlay.is-active .center-zoom-modal-window_modal{
transform:scale(1);
opacity:1;
}
/* モーダルを閉じるボタン */
.center-zoom-modal-window_close{
position:absolute;
top:10px;
right:10px;
width:36px;
height:36px;
border:none;
border-radius:50%;
background:rgba(0,0,0,0.7);
color:#ffffff;
font-size:22px;
line-height:1;
cursor:pointer;
}
/* モーダル内の画像 */
.center-zoom-modal-window_modal img{
display:block;
width:100%;
height:auto;
border-radius:12px;
}
// 拡大表示する画像ボタンを取得
const zoomOpen=document.querySelector("[data-zoom-open]");
// モーダル背景を取得
const zoomOverlay=document.querySelector("[data-zoom-overlay]");
// 閉じるボタンを取得
const zoomClose=document.querySelector("[data-zoom-close]");
// 画像ボタンをクリックしたときの処理
zoomOpen.addEventListener("click",function(){
zoomOverlay.classList.add("is-active");
});
// 閉じるボタンをクリックしたときの処理
zoomClose.addEventListener("click",function(){
zoomOverlay.classList.remove("is-active");
});
// モーダル背景をクリックしたときの処理
zoomOverlay.addEventListener("click",function(event){
// モーダル本体ではなく外側の背景部分をクリックした場合のみ閉じる
if(event.target===zoomOverlay){
zoomOverlay.classList.remove("is-active");
}
});
ファイル構成と設置方法
このサンプルは、HTML・CSS・JavaScriptをそれぞれ別ファイルに分けて使用します。index.html、style.css、script.js を同じフォルダに配置してください。
sample/
├── index.html
├── style.css
└── script.js
index.html をブラウザで開くと、画像をクリックしてモーダルウインドウを画面中央で拡大表示できます。閉じるボタン、または外側の背景部分をクリックするとモーダルを閉じられます。
モーダルウインドウを画面中央で拡大表示する方法【HTML/CSS/JavaScript・サンプルコード付き】
コメント