【モーダルウィンドウ】プラグインを利用してhtml内のソースを表示【jquery.magnific-popup.js】

jQueryプラグインのjquery.magnific-popup.jsを利用します。レスポンシブ対応で、bodyのスクロールバーは非表示です。html内のソースをidで指定してモーダルウィンドウ内に表示します。

サンプルデモはこちら

なお利用にはCSSファイルとjsファイルの読み込みが必要です。

<link rel="stylesheet" href="css/magnific-popup.css">
<script src="js/jquery.magnific-popup.min.js"></script>

まず、htmlのコードです。
モーダルウィンドウを開くリンクとモーダルウィンドウのdivタグにそれぞれidを付与し、jQuery側で対象を特定できるようにします。モーダルウィンドウのdivタグにはクラス名mfp-hideを付与します。これでページ表示時はモーダルウィンドウが非表示になります。モーダルウィンドウの×と閉じるのbuttonタグにはクラス名mfp-closeを付与します。これでモーダルウィンドウを閉じる動作が実装できます。mfp-hideとmfp-closeはmagnific-popup.cssのCSSです。

<ul>
	<li><a class="modal-open" id="link_category01">モーダルウィンドウ01</a></li>
	<li><a class="modal-open" id="link_category02">モーダルウィンドウ02</a></li>
	<li><a class="modal-open" id="link_category03">モーダルウィンドウ03</a></li>
</ul>
<div id="modal_wrap">
	<div id="category01" class="modal-content mfp-hide">
		<div class="modal-header">
			<p class="modal-title">モーダルウィンドウ01:タイトル</p>
			<button type="button" class="close mfp-close">×</button>
		</div>
		<div class="modal-body">
			<p>モーダルウィンドウ01:ダミーテキストダミーテキストダミーテキスト</p>
		</div>
		<div class="modal-footer">
			<button type="button" class="btn mfp-close">閉じる</button>
		</div>
	</div>
	<div id="category02" class="modal-content mfp-hide">
		<div class="modal-header">
			<p class="modal-title">モーダルウィンドウ02:タイトル</p>
			<button type="button" class="close mfp-close">×</button>
		</div>
		<div class="modal-body">
			<p>モーダルウィンドウ02:ダミーテキストダミーテキストダミーテキスト</p>
		</div>
		<div class="modal-footer">
			<button type="button" class="btn mfp-close">閉じる</button>
		</div>
	</div>
	<div id="category03" class="modal-content mfp-hide">
		<div class="modal-header">
			<p class="modal-title">モーダルウィンドウ03:タイトル</p>
			<button type="button" class="close mfp-close">×</button>
		</div>
		<div class="modal-body">
			<p>モーダルウィンドウ03:ダミーテキストダミーテキストダミーテキスト</p>
		</div>
		<div class="modal-footer">
			<button type="button" class="btn mfp-close">閉じる</button>
		</div>
	</div>
</div>

続いてCSSのコードです。
magnific-popup.cssのCSSであるクラス名mfp-closeを追加したことで×と閉じるのbuttonタグのCSSに影響があるため、必要な箇所はオーバーライトします。それ以外はモーダルウィンドウの体裁に関わるCSSですが、モーダルウィンドウの画面中央への表示や背景のオーバーレイのCSSはmagnific-popup.cssで制御されているため記述は不要です。

.modal-open {
	text-decoration: underline;
	cursor: pointer;
}
.modal-content {
	max-width: 500px;
	margin: 0 auto;
	border: 1px solid rgba(0, 0, 0, 0.2);
	border-radius: 0.3rem;
	background: #fff;
}
.modal-header {
	display: flex;
	justify-content: space-between;
	padding: 1rem;
	border-bottom: 1px solid #dee2e6;
}
.modal-header .close {
	position: relative;
	width: auto;
	height: auto;
	font-size: 1.5rem;
	font-weight: 700;
	line-height: 1;
	color: #000;
	opacity: .5;
}
.modal-header .close:hover {
	opacity: .75;
}
.modal-header .close:active {
	top: 0;
}
.modal-body {
	padding: 1rem;
}
.modal-footer {
	display: flex;
	justify-content: flex-end;
	padding: 1rem;
	border-top: 1px solid #dee2e6;
}
.btn {
	position: relative;
	width: auto;
	height: auto;
	display: inline-block !important;
	font-weight: 400;
	color: #fff !important;
	text-align: center;
	vertical-align: middle;
	user-select: none;
	background: #6c757d !important;
	border: 1px solid #6c757d !important;
	padding: 0.375rem 0.75rem !important;
	font-size: 1rem;
	line-height: 1.5;
	border-radius: 0.25rem;
	transition: 0.15s;
	opacity: 1;
	font-family: initial;
}
.btn:hover {
	background: #5a6268;
	border-color: #545b62;
	opacity: 0.7;
	transition: 0.7s;
}
.btn:active {
	top: 0;
}

最後にjQueryのコードです。
モーダルウィンドウを開くリンクに付与したidがセレクタ、オプションのitemsのsrcで指定したidがモーダルウィンドウで表示する対象ソースです。なおコンテンツタイプは「inline」になりますが、初期値が「inline」のため指定していません。

$(function() {
	$('#link_category01').magnificPopup({
		items: {
			src: '#category01'
		}
	});
	$('#link_category02').magnificPopup({
		items: {
			src: '#category02'
		}
	});
	$('#link_category03').magnificPopup({
		items: {
			src: '#category03'
		}
	});
});
タイトルとURLをコピーしました