【jQuery】モーダルウィンドウの簡単な作り方とサンプル

目次

今回は、WEBサイトのログイン機能などによく使われる、モーダルの作り方とそのサンプルについて紹介していきます。

モーダルの作り方の基本

最も基本的なモーダルでいうと、モーダルを開く用のボタンとモーダルの画面を作り、jQueryのclickイベントで表示・非表示を切り替えることになります。モーダルはボタンをクリックしたときにだけ表示したいので、デフォルトでdisplay: none;を指定しておきます。

それでは、実際のサンプルと作り方についてみていきます。

モーダルのサンプル

シンプル

<a class="modal-btn">モーダル</a>

<div class="modal-screen">
	<a class="close-btn">閉じる</a>
</div>
.modal-btn {
	display: block;
	width: 150px;
	height: 50px;
	text-align: center;
	line-height: 50px;
	cursor: pointer;
	background-color: skyblue;
	border-radius: 5px;
}

.modal-screen {
	display: none;
	height: 400px;/* 画面中央に配置↓ */
	width: 500px;
	position: absolute;
	top: 50%;
	left: 50%;
	margin-top: -200px;
	margin-left: -250px;/* 画面中央に配置↑ */
	background-color: #fff;
	z-index: 2;
	border: 1px solid black;
}

.close-btn {
	display: block;
	width: 80px;
	height: 40px;
	text-align: center;
	line-height: 40px;
	cursor: pointer;
	border: 1px solid;
	float: right;
}
$(".modal-btn").click(function() {
	$(".modal-screen").fadeIn(200);
});

$(".close-btn").click(function() {
	$(".modal-screen").fadeOut(200);
});

モーダルの外側の背景を暗くする

↓モーダルの外側に暗いフィルターをかけるため、新たにdiv(class=”modal-overlay”)を作り、そこにbackground-colorを指定しました。オーバーレイはposition:
fixed;で左上に固定し、widthとheightを100%にして画面全体に表示されるようにしています。また、z-indexで重なり順を調整して、モーダルがオーバーレイよりも手前に表示されるようになっています。

<a class="modal-btn">モーダル</a>

<div class="modal-overlay"></div>
<div class="modal-screen">
	<a class="close-btn">閉じる</a>
</div>
.modal-btn {
	display: block;
	width: 150px;
	height: 50px;
	text-align: center;
	line-height: 50px;
	cursor: pointer;
	background-color: skyblue;
	border-radius: 5px;
}

.modal-overlay {
	display: none;
	position: fixed;
	top: 0;
	left: 0;
	width: 100%;
	height: 100%;
	background-color: rgba(0,0,0,0.5);
	z-index: 1;
}

.modal-screen {
	display: none;
	height: 400px;/* 画面中央に配置↓ */
	width: 500px;
	position: absolute;
	top: 50%;
	left: 50%;
	margin-top: -200px;
	margin-left: -250px;/* 画面中央に配置↑ */
	background-color: #fff;
	z-index: 2;
}

.close-btn {
	display: block;
	width: 80px;
	height: 40px;
	text-align: center;
	line-height: 40px;
	cursor: pointer;
	border: 1px solid;
	float: right;
}
$(".modal-btn").click(function() {
	$(".modal-overlay").fadeIn(200);
	$(".modal-screen").fadeIn(200);
});

$(".close-btn").click(function() {
	$(".modal-overlay").fadeOut(200);
	$(".modal-screen").fadeOut(200);
});

領域外をクリックするとモーダルが閉じる

モーダルの外をクリックするとモーダルが閉じるようにするには、ひとつ前の例のHTMLとCSSをそのまま使い、jQueryの2つ目のclickイベントのセレクタに「.modal-overlay」を追加するだけでOKです。

$(".modal-btn").click(function() {
	$(".modal-overlay").fadeIn(200);
	$(".modal-screen").fadeIn(200);
});

$(".close-btn, .modal-overlay").click(function() {
	$(".modal-overlay").fadeOut(200);
	$(".modal-screen").fadeOut(200);
});