JavaScript

【jQuery】シンプルなモーダルウィンドウの実装方法

JavaScript

【jQuery】シンプルなモーダルウィンドウの実装方法

プラグイン不要のjQueryとCSSを使った簡単なモーダルウィンドウの実装方法をご紹介します。
まずはサンプルをご覧ください。

モーダルのサンプル

See the Pen simple modal window01 by RECOOORD (@recooord) on CodePen.

See the Pen simple modal window01 by RECOOORD (@recooord) on CodePen.

上記2つのサンプルはHTMLの文章量が異なるだけで、CSSとjQueryは同じコードを使っています。
特徴としては、文章量が少ない場合は、ブラウザ中央に表示され、文章量が多い場合はモーダルをスクロールして閲覧することができます。

HTML

<!-- モーダルを開くボタン -->
<div class="modal-open">モーダルを開く</div>

<!-- モーダル本体 -->
<div class="modal-container">
	<div class="modal-body">
		<!-- 閉じるボタン -->
		<div class="modal-close">×</div>
		<!-- モーダル内のコンテンツ -->
		<div class="modal-content">
			<p>文章が入ります。</p>
		</div>
	</div>
</div>

モーダルを開くためのボタンと、モーダル本体を記述します。

CSS

/*モーダルを開くボタン*/
.modal-open{
	position: fixed;
	display: flex;
    align-items: center;
    justify-content: center;
    top: 50%;
    left: 50%;
	width: 300px;
	height: 50px;
	font-weight: bold;
	color: #fff;
	background: #000;
	margin: auto;
	cursor: pointer;
	transform: translate(-50%,-50%);
}
/*モーダル本体の指定 + モーダル外側の背景の指定*/
.modal-container{
	position: fixed;
	top: 0;
	left: 0;
	width: 100%;
	height: 100%;
	text-align: center;
	background: rgba(0,0,0,50%);
	padding: 40px 20px;
	overflow: auto;
	opacity: 0;
	visibility: hidden;
	transition: .3s;
    box-sizing: border-box;
}
/*モーダル本体の擬似要素の指定*/
.modal-container:before{
	content: "";
	display: inline-block;
	vertical-align: middle;
	height: 100%;
}
/*モーダル本体に「active」クラス付与した時のスタイル*/
.modal-container.active{
	opacity: 1;
	visibility: visible;
}
/*モーダル枠の指定*/
.modal-body{
	position: relative;
	display: inline-block;
	vertical-align: middle;
	max-width: 500px;
	width: 90%;
}
/*モーダルを閉じるボタンの指定*/
.modal-close{
	position: absolute;
	display: flex;
    align-items: center;
    justify-content: center;
	top: -40px;
	right: -40px;
	width: 40px;
	height: 40px;
	font-size: 40px;
	color: #fff;
	cursor: pointer;
}
/*モーダル内のコンテンツの指定*/
.modal-content{
	background: #fff;
	text-align: left;
	padding: 30px;
}

jQuery

$(function(){
	// 変数に要素を入れる
	var open = $('.modal-open'),
		close = $('.modal-close'),
		container = $('.modal-container');

	//開くボタンをクリックしたらモーダルを表示する
	open.on('click',function(){	
		container.addClass('active');
		return false;
	});

	//閉じるボタンをクリックしたらモーダルを閉じる
	close.on('click',function(){	
		container.removeClass('active');
	});

	//モーダルの外側をクリックしたらモーダルを閉じる
	$(document).on('click',function(e) {
		if(!$(e.target).closest('.modal-body').length) {
			container.removeClass('active');
		}
	});
});

上記のコードをコピペするだけで実装することができます。

まとめ

jQueryとCSSで作るモーダルの実装方法を紹介しました。
モーダルの実装方法は様々なやり方がありますが、今回紹介した例では、なるべくコード量が少なくなるように実装してみました。

当ブログで他の実装方法も紹介してますので、よかったら参考にしてみてください。

あなたにおすすめの記事