読者です 読者をやめる 読者になる 読者になる

オーバレイ表示をするjQueryプラグイン

特定の領域をオーバレイ表示するjQueryプラグインを作って見ました。
共円のページで、問題を表示する際に利用しています。
http://my-android-server.appspot.com/page/list.html?open=1


以下はテスト用のサンプル。
http://dl.dropbox.com/u/8518065/sample/20120119/test.html


プラグイン部分です。

(function($) {
	$.fn.overlay = function(overlayConfig) {
		var $target = $(this);
		var defaultOption = {
				position: 'fixed',
				bottom: 0,
				left: 0,
				right: 0,
				top: 0,
				backgroundColor: 'rgba(0, 0, 0, 0.5)',
			};
		var option = $.extend(defaultOption, overlayConfig);
		var $overlay = $('#overlay_area');
		if (!$overlay.length) {
			// 存在しない場合は作成
			$overlay = $('<div />').attr({
				id: 'overlay_area',
			});
			$('body').append($overlay);
		}

		$overlay.css(option);
		$overlay.append($target);

		$overlay.click(function(){
			// オーバレイ領域がクリックされた場合は隠す
			$overlay.hide();
			$target.hide();
		});
		$target.click(function(e) {
			// ターゲット領域がクリックされた場合はイベントの伝達を止める
			e.stopPropagation();
		});

		$overlay.show();
		$target.show();
	}
})(jQuery);


以下、サンプル用のHTML。

<!DOCTYPE html>
<html lang="ja">
<head>
	<meta charset="UTF-8">
	<title>テスト</title>
	<script src="http://code.jquery.com/jquery-1.7.1.min.js"></script>
	<script src="js/overlay.js"></script>
<script type="text/javascript">
$(function() {
	$('#overlay_button').click(function() {
		$('#overlay_target').overlay();
	});
	$('#overlay_button2').click(function() {
		$('#overlay_target2').overlay({
			backgroundColor: 'rgba(255, 0, 255, 0.4)'
			});
	});
});
</script>
<style>
.target {
	position: initial;
	margin-top: 5px;
	margin-left: auto;
	margin-right: auto;
	display: none;
}
</style>
</head>
<body style="background-color: #8ae">

<input id="overlay_button" type="button" value="オーバレイ表示" />
<input id="overlay_button2" type="button" value="オーバレイ表示2" />

<div id="overlay_target"
		style="width: 300px; height: 400px; background-color: #eee;"
		class="target">
	テストです。
	<span style="background-color: #f00">背景色のテスト</span>
</div>
<div id="overlay_target2"
		style="width: 300px; height: 400px; background-color: #efe;"
		class="target">
	テスト2
</div>
</body>
</html>


以下のようにすることで、id="overlay_target"のdivタグをオーバレイ表示します。

$('#overlay_target').overlay();

また、オーバレイ領域の色を変更したい場合などは以下のようにします。

$('#overlay_target2').overlay({
	backgroundColor: 'rgba(255, 0, 255, 0.4)'
	});