nyaou.com

jQueryUI dialog を使ってモーダルダイアログ表示

2012-12-29 19:39:20

jQuery UI ロゴ

jQueryUI dialog を使って、モーダル表示を実装しました。
当サイト右上の (・v・) マークをクリックするとモーダルが表示されます。

今回はダイアログをモーダルとして表示する事に加え、ダイアログ画面以外のブラウザ領域をクリックすることによって、ダイアログが閉じるようにしました。
以下、実装までの手順。

jQueryUI 読込設定

まず、jQueryUI の読込設定。
今回は Google の CDN を使用しました。

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1/jquery-ui.min.js"></script>
<link href="http://ajax.googleapis.com/ajax/libs/jqueryui/1/themes/base/jquery-ui.css" rel="stylesheet" /> 

1 行目が jQuery、2行目が jQueryUI、3行目が jQueryUI の CSS となります。
また、CSS に関しては、複数のデザインが予め用意されています。

CSS のデザイン一覧は下記サイトより確認できます。
Gallery から、見たいテザインの Edit ボタンをクリックすることにより、ページ下部にデザインが表示されます。

使用したいデザインがあれば、/base/ の部分をデザイン名に書き換えます。
たとえば、UI lightness に変更したい場合は以下のとおり。

変更前

http://ajax.googleapis.com/ajax/libs/jqueryui/1/themes/base/jquery-ui.css

変更後

http://ajax.googleapis.com/ajax/libs/jqueryui/1/themes/ui-lightness/jquery-ui.css

※空白はハイフン(-)、大文字は小文字に直して設定します。

さらに、上記のサイトでは、独自に CSS デザインを簡単にカスタマイズすることもできます。
アクセスした時のページから色々いじることができるので、自分なりにテーマを作るのも良いかと思います。

WordPress で jQueryUI を使用する場合

WordPress で jQueryUI を使用する場合は、jQuery と関連付けるために、wp_enqueue_script を用いて function.php に以下のように記載するのが望ましいと思います。

function.php

function registerScripts() {
	wp_enqueue_script('jqueryUI', 'http://ajax.googleapis.com/ajax/libs/jqueryui/1/jquery-ui.min.js', array('jquery'));
}
add_action('wp_enqueue_scripts', 'registerScripts');

wp_enqueue_script の第3引数は依存関係を設定でき、この場合は jQuery に依存することを示しています。

ちなみに CSS もできれば function.php で一括管理した方が良いかと思います。
そのへんについては、下記サイトが解りやすく解説しています。

ダイアログの JavaScript コード

次に、ダイアログ表示用のスクリプトを HTML 内に記載します。

$(function(){
	// モーダル初期設定
	$('#modal').dialog({
		autoOpen: false,  // 自動でオープンしない
		modal: true,      // モーダル表示する
		resizable: false, // リサイズしない
		draggable: false, // ドラッグしない
		show: "clip",     // 表示時のエフェクト
		hide: "fade"      // 非表示時のエフェクト
	});

	// .selecter クリック時にモーダル表示
	$('.selecter').click(function () {
		$('#modal').dialog('open');
		return false;
	});

	// モーダル画面以外のブラウザ領域をクリックで、モーダル非表示
	$(document).on('click', '.ui-widget-overlay', function(){
		$(this).prev().find('.ui-dialog-content').dialog('close');
	});
});

4 行目 autoOpen は、自動的にダイアログが表示されないようにしています。
デフォルトでは自動的にダイアログが表示されるため、ページ表示時にダイアログが表示されます。

5 行目 modal は、モーダル(ダイアログ表示時は、ダイアログ以外の領域操作不可)として表示します。
デフォルトでは、通常のダイアログ(ダイアログ表示時も他の領域操作可能)表示となります。

6 行目 resizable はリサイズ無効(デフォルトでは有効)、7 行目 draggable はドラッグ無効(デフォルトでは有効)としています。

8、9 行目は表示/非表示のエフェクト設定です。
エフェクトに関しては、Effect | jQuery UI から色々選べます。

13 ~ 15 行目で、要素 .selecter がクリックされた際に、ダイアログを表示するようにしています。

19 ~ 21 行目で、ダイアログ以外のブラウザ領域がクリックされた際に、ダイアログを閉じるようにしています。
$(document).on() に関しては、以下のサイトでの解説がわかり易かったです。

以上で、実装は完了です。
デモは当サイトの右上をクリック!

このエントリーをはてなブックマークに追加

当サイトは管理人「まだこ」による様々なジャンルのレビューサイトです。

ご連絡は、TwitterFacebook でお願いします。