アプリ内容
次の内容のアプリですわ。スライディングメニューとページ移動のみの、機能は一切無いアプリとなりますの。
- ページ一覧
- メインページ
- ページ1
- ページ2
- メインページ ←→ ページ1←→ ページ2 →メインページ …、と移動する。
- メインページのみ、スライディングメニューを持つ。
テンプレートとコード
- Onsen UI最小限のテンプレート
Onsen UI Sliding Menu テンプレートでも良かったかもしれませんけれども、メインはナビゲーションということで、最小限のテンプレートを選びました。
ファイル構成は次のようにいたしました。
- index.html に全てのコードを記述する。
- page1.html、page2.html は削除する。
そして、コードは次のようになりました。書いていてポイントと感じたことなどをメモしておきます♪
- OnsenUI を読み込むのみで、他の JavaScript は一切不要
- ons-navigator 内で移動するページの中に、ons-sliding-menu を組み込む
- ons-sliding-menu のページは、メニューページとメインページを乗せるだけの土台とする。
- ons-sliding-menu のメインページは、ナビゲーションの管理下に置くことができる。
- スライディングメニューページヘ移動する時は、ons-sliding-menu のメインページではなく、土台となるページを移動先へ指定すること。
index.html
<!DOCTYPE HTML> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no"> <script src="components/loader.js"></script> <link rel="stylesheet" href="components/loader.css"> <link rel="stylesheet" href="css/style.css"> <script> ons.bootstrap(); </script> </head> <body> <!-- アプリ全体をナビゲーションでページ管理を行う --> <ons-navigator var="navi" page="start.html"> </ons-navigator> <!-- スライディングメニューをもったページ --> <!-- 左に位置するメニューページと右に位置するメインページを乗せるページ --> <ons-template id="start.html"> <ons-page> <ons-sliding-menu var="slidingMenu" menu-page="menu.html" main-page="main.html"> </ons-sliding-menu> </ons-page> </ons-template> <!-- 左に位置するメニューページ --> <ons-template id="menu.html"> <ons-page> <h1>スライディングメニュー</h1> </ons-page> </ons-template> <!-- 右に位置するメインページ --> <!-- スライディングメニューを構成するが、ナビゲーションの管理下でもある --> <ons-template id="main.html"> <ons-page> <ons-toolbar> <div class="center">メインページ</div> </ons-toolbar> <div style="text-align: center"> <br> <ons-button onclick="navi.pushPage('page1.html')"> Push Page 1 </ons-button> </div> </ons-page> </ons-template> <!-- ナビゲーション管理下のページ --> <ons-template id="page1.html"> <ons-page> <ons-toolbar> <div class="left"><ons-back-button>Back</ons-back-button></div> <div class="center">ページ 1</div> </ons-toolbar> <div style="text-align: center"> <br> <ons-button onclick="navi.popPage()"> Pop Page </ons-button> <br> <br> <ons-button onclick="navi.pushPage('page2.html')"> Push Page 2 </ons-button> </div> </ons-page> </ons-template> <!-- ナビゲーション管理下のページ --> <ons-template id="page2.html"> <ons-page> <ons-toolbar> <div class="left"><ons-back-button>Back</ons-back-button></div> <div class="center">ページ 2</div> </ons-toolbar> <div style="text-align: center"> <br> <ons-button onclick="navi.popPage()"> Pop Page </ons-button> <br> <br> <!-- main.html への移動ではスライディングメニューが使用できなくなる。 --> <!-- start.html へ移動すること --> <ons-button onclick="navi.resetToPage('start.html')"> Reset To Page start.html </ons-button> </div> </ons-page> </ons-template> </body> </html>
おわりに
次の書籍が大変参考になりました♪なにより、ナビゲーションでページ管理するアプリにスライディングメニューを取り入れる方法が、簡単ではありますけれども明記されておりました。
- Monaca – Monaca公式ガイドブック「クラウドでできるHTML5ハイブリッドアプリ開発」
- P141、5-7-7 <ons-sliding-menu>コンポーネント、<ons-sliding-menu>と<ons-navigator>の組み合わせ
できる!ということがわかったことが、諦める選択肢を削ることができましたのでとても有用でしたの♪
また、次の公式ページも各パーツの仕様が確認でき、役に立ちました♪
以上です。