CoolWebWindow

自作したjQueryプラグインを無料配布しているサイトです。
jQueryプラグインは商用利用可能、MITライセンス表示、カスタマイズ無制限です。

無料jQueryプラグイン [モーダルウィンドウ(スクロールバージョン)]

単体バージョン:jquery.modal_scroll.js

スマートフォンに対応した、ポップアップウィンドウがスクロール表示されるタイプのモーダルウィンドウです。かなりシンプルなタイプですので、初心者の方にも設置が簡単です。

CSSを多少変更することによって、ブラウザ側にスクロールを出すタイプと、モーダルウィンドウにスクロールを出すタイプを作ることができます。(モーダルコンテンツ領域である『modal-content』に『max-height:50%;』と『overflow:auto;』を追加するだけです。)

HTML

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width">
<link href="css/common.css" rel="stylesheet" type="text/css">
<link href="css/style.css" rel="stylesheet" type="text/css">
<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript" src="js/jquery.modal_scroll.js"></script>
<link rel="stylesheet" href="css/style.css.css" type="text/css">
<title>[DEMO]モーダルウィンドウ(スクロールバージョン)</title>
</head>
<body>
<a data-target="con1" class="modal-open">リンク1</a>
<a data-target="con2" class="modal-open">リンク2</a>
<a data-target="con3" class="modal-open">リンク3</a>
<a data-target="con4" class="modal-open">リンク4</a>
<a data-target="con5" class="modal-open">リンク5</a>
<div id="con1" class="modal-content">
	<p><a href="./">リンク1の内容です。</a>リンク1の内容です。リンク1の内容です。リンク1の内容です。リンク1の内容です。リンク1の内容です。リンク1の内容です。リンク1の内容です。(略)</p>
	<p><a class="modal-close">閉じる</a></p>
</div>
<div id="con2" class="modal-content">
	<p><a href="./">リンク2の内容です。</a>リンク2の内容です。リンク2の内容です。リンク2の内容です。リンク2の内容です。リンク2の内容です。リンク2の内容です。リンク2の内容です。(略)</p>
	<p><a class="modal-close">閉じる</a></p>
</div>
<div id="con3" class="modal-content">
	<p><a href="./">リンク3の内容です。</a>リンク3の内容です。リンク3の内容です。リンク3の内容です。リンク3の内容です。リンク3の内容です。リンク3の内容です。リンク3の内容です。リンク3の内容です。リンク3の内容です。リンク3の内容です。リンク3の内容です。リンク3の内容です。リンク3の内容です。リンク3の内容です。リンク3の内容です。</p>
	<p><a class="modal-close">閉じる</a></p>
</div>
<div id="con4" class="modal-content">
	<p><a href="./">リンク4の内容です。</a>リンク4の内容です。</p>
	<p><a class="modal-close">閉じる</a></p>
</div>
<div id="con5" class="modal-content">
	<p><a href="./">リンク5の内容です。</a>リンク5の内容です。リンク5の内容です。リンク5の内容です。リンク5の内容です。リンク5の内容です。リンク5の内容です。リンク5の内容です。リンク5の内容です。リンク5の内容です。リンク5の内容です。リンク5の内容です。(略)</p>
	<p><a class="modal-close">閉じる</a></p>
</div>
<p>
クリックしてみてください。ウィンドウより大きいモーダルウィンドウにはスクロールバーが出ていると思います。<br>
</p>
</body>
</html>

CSS(ブラウザのウィンドウがスクロール)

body {
	margin:10px;
	padding:10px;
	border:10px solid #ddd;
}

.lock {
	overflow:hidden;
}

.modal-content {
	position:relative;
	display:none;
	width:50%;
	margin:30px;
	padding:10px 20px;
	border:2px solid #aaa;
	background:#fff;
}

.modal-content p {
	margin:0;
	padding:0;
}

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

.modal-wrap {
	z-index:2;
	display:none;
	position:fixed;
	top:0;
	left:0;
	width:100%;
	height:100%;
	overflow:auto;
}


.modal-open {
	color:#00f;
	text-decoration:underline;
}

.modal-open:hover {
	cursor:pointer;
	color:#f00;
}

.modal-close {
	color:#00f;
	text-decoration:underline;
}

.modal-close:hover {
	cursor:pointer;
	color:#f00;
}

CSS(モーダルウィンドウがスクロール)

body {
	margin:10px;
	padding:10px;
	border:10px solid #ddd;
}

.lock {
	overflow:hidden;
}

.modal-content {
	overflow:auto;
	position:relative;
	display:none;
	width:50%;
	max-height:50%;
	margin:30px;
	padding:10px 20px;
	border:2px solid #aaa;
	background:#fff;
}

.modal-content p {
	margin:0;
	padding:0;
}

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

.modal-wrap {
	z-index:2;
	display:none;
	position:fixed;
	top:0;
	left:0;
	width:100%;
	height:100%;
	overflow:auto;
}


.modal-open {
	color:#00f;
	text-decoration:underline;
}

.modal-open:hover {
	cursor:pointer;
	color:#f00;
}

.modal-close {
	color:#00f;
	text-decoration:underline;
}

.modal-close:hover {
	cursor:pointer;
	color:#f00;
}

リンクしたいテキストをアンカーで囲み(別にaタグでなくてもよいのですが、そのほうが意味的には通っているので)、「data-target」という新しい属性を作ります。この属性に任意の文字列を与えます。サンプルコードで言えば、「con1」とか「con2」とかです。

モーダルウィンドウで表示したいコンテンツをdiv要素で囲み、div要素に先ほど指定したdata-targetの値(文字列)をclass名にして指定します。

モーダルウィンドウに閉じるボタン機能を設置しています。ある要素に「modal-close」というクラス名を設定すれば、それをクリックするとモーダルウィンドウが閉じるようになります。サンプルではリンクとわかりやすいようにアンカーを設定していますが、特にアンカーにする必要はありません。

更新履歴

2018-01-07
ver1.0公開 
ページのトップへ戻る