jQuery Mobile 1つのHTMLファイルに複数ページを記述する
公開日:2014年10月10日
最終更新日:2014年11月9日
jQuery Mobile では1つのHTMLファイルに複数のページを含めることができます。1回で複数ページのダウンロードが済むため効率的になる場合もありますが、閲覧しないページも含まれるとかえって無駄になってしまう場合もありますので状況により使い分けましょう。
«次の特集記事» jQuery Mobile ページを構成するUI要素(ウィジェット)の指定方法
«前の特集記事» jQuery Mobile ページ遷移の仕組み
【コンテンツ】
【記事執筆時の環境】
jQuery Mobile 1.4.4/1.4.5
複数ページの記述方法
jQuery Mobile では、div要素に「data-role="page"」と指定した部分が1ページとして認識されます。
したがって別々のページとして認識させたい場合は、「data-role="page"」を指定したdiv要素のかたまりを複数設置すればよいわけです。
この時それぞれのdiv要素には必ずidを付与します。
以下は記述例です。
1 2 3 4 5 6 7 8 9 10 11 |
<div data-role="page" id="top"> <div role="main" class="ui-content"> <p>ここはトップページです</p> </div> </div> <div data-role="page" id="sub"> <div role="main" class="ui-content"> <p>ここはサブページです</p> </div> </div> |
それぞれのページへのリンクの仕方
最初にページにアクセスしたときは、「data-role="page"」が記述された一番上の要素が表示されます。
別のページへ移動したいときは、idにハッシュマークをつけて「#sub」などとリンク先に指定します。
以下は複数ページを記述したフルのHTMLの例です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>jQuery Mobile Tips</title> <link rel="stylesheet" href="http://code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.css"> <script src="http://code.jquery.com/jquery-1.11.1.min.js"></script> <script src="http://code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.js"></script> <style type="text/css"> .ui-header .ui-title { margin: 0 10px; } .ui-footer { font-size: 13px; text-align: center; } </style> </head> <body> <div data-role="page" id="top"> <div data-role="header"> <h1>DEMOページ トップ</h1> </div> <div role="main" class="ui-content"> <p>ここはトップページです</p> <a href="#sub">サブページへ移動 »</a> </div> <div data-role="footer"> <p> <script type="text/javascript"> var today = new Date(); var y = today.getFullYear(); document.write("© " + y + " Web Tips アーカイブ"); </script> </p> </div> </div> <div data-role="page" id="sub"> <div data-role="header"> <h1>DEMOページ サブ</h1> </div> <div role="main" class="ui-content"> <p>ここはサブページです</p> <a href="#top">トップページへ移動 »</a> </div> <div data-role="footer"> <p> <script type="text/javascript"> var today = new Date(); var y = today.getFullYear(); document.write("© " + y + " Web Tips アーカイブ"); </script> </p> </div> </div> </body> </html> |
ダイアログを表示する
「data-role="page"」を指定したdiv要素には、ダイアログのようにページを表示するオプションを指定できます。
以下のように「data-dialog="true"」と指定します。
1 2 3 4 5 6 7 8 9 |
<div data-role="page" data-dialog="true" id="sub"> <div data-role="header"> <h1>ダイアログ</h1> </div> <div role="main" class="ui-content"> <p>ダイアログを表示しています</p> <a href="#top">トップページへ移動 »</a> </div> </div> |
ダイアログにはデフォルトで「×」の形をしたダイアログを閉じるアイコンが左上に表示されます。
これを data-close-btn属性で右上にしたり表示なしにすることができます。
データ属性指定 | 説明 |
---|---|
data-close-btn="left" (デフォルト) | アイコンを左上に表示 |
data-close-btn="right" | アイコンを右上に表示 |
data-close-btn="none" | アイコンを表示しない |
初期の頃はページ切り替えが速いという理由で、jQuery Mobileでは1ファイルに複数ページを記載する方法を推奨していました。しかしあまりにも多くのページを含めるのは無駄なトラフィックを生む原因となり、最初のページ表示に時間がかかってしまいます。
複数ページを記載するのはそのファイルのメインページに付随するダイアログや、一連の流れで順番に表示するページに限った方が良いでしょう。
«次の特集記事» jQuery Mobile ページを構成するUI要素(ウィジェット)の指定方法
«前の特集記事» jQuery Mobile ページ遷移の仕組み
スポンサーリンク