Onsen UIのタブ型の機能を使ってみます。
ons-tabbar
ons-tabbarにlabelとiconを設定してみます。
index.html
<ons-tabbar var="myNavigator"> <ons-tab page="top.html" label="トップ" icon="fa-home" active="true"></ons-tab> <ons-tab page="tab1.html" label="タブ1" icon="fa-search"></ons-tab> <ons-tab page="tab2.html" label="タブ2" icon="fa-star"></ons-tab> <ons-tab page="tab3.html" label="タブ3" icon="fa-gear"></ons-tab> </ons-tabbar>
タブバーを上部に固定する場合、ons-tabbarにposition=”top”を指定します。
index2.html
<ons-tabbar var="myNavigator" position="top"> <ons-tab page="top.html" label="トップ" icon="fa-home" active="true"></ons-tab> <ons-tab page="tab1.html" label="タブ1" icon="fa-search"></ons-tab> <ons-tab page="tab2.html" label="タブ2" icon="fa-star"></ons-tab> <ons-tab page="tab3.html" label="タブ3" icon="fa-gear"></ons-tab> </ons-tabbar>
ons-tab内にHTMLも記述できます。
ons-tab-activeでアクティブ時、ons-tab-inactiveで非アクティブ時の切り替えを行えます。
index3.html
<ons-tabbar var="myNavigator"> <ons-tab page="top.html" active="true"> <div ons-tab-active class="tab-style01">トップ(active)</div> <div ons-tab-inactive class="tab-style01_2">トップ(inactive)</div> </ons-tab> <ons-tab page="tab1.html"> <div class="tab-style02">タブ1</div> </ons-tab> <ons-tab page="tab2.html"> <div class="tab-style03">タブ2</div> </ons-tab> <ons-tab page="tab3.html"> <div class="tab-style04">タブ3</div> </ons-tab> </ons-tabbar>
ons-tabbarのメソッド
index4.html
<ons-tabbar var="myNavigator"> <ons-tab page="top2.html" label="トップ" icon="fa-home" active="true"></ons-tab> <ons-tab page="tab1.html" label="タブ1" icon="fa-search"></ons-tab> <ons-tab page="tab2.html" label="タブ2" icon="fa-star"></ons-tab> <ons-tab page="tab3.html" label="タブ3" icon="fa-gear"></ons-tab> </ons-tabbar>
top2.html
<ons-page>
<ons-toolbar>
<div class="center">トップ</div>
</ons-toolbar>
<div class="contents">
<ons-list>
<ons-list-item modifier="chevron" ng-click="myNavigator.setActiveTab(1)">タブ1へ</ons-list-item>
<ons-list-item modifier="chevron" ng-click="myNavigator.setActiveTab(2, {keepPage: true})">タブ部分のみタブ2へ</ons-list-item>
<ons-list-item modifier="chevron" ng-click="console.log(myNavigator.getActiveTabIndex())">アクティブなタブを取得</ons-list-item>
<ons-list-item modifier="chevron" ng-click="myNavigator.loadPage('tab3.html')">タブ部分を変更しないでタブ3へ</ons-list-item>
</ons-list>
</div>
</ons-page>
| setActiveTab(index[, options]) | 指定したindexのタブを表示。 optionsにはkeepPage: trueでタブのみの変更、animationでアニメーションの設定が可能。 |
|---|---|
| getActiveTabIndex() | 現在アクティブになっているタブのインデックスを返す。 |
| loadPage(pageUrl) | タブを変更せずにページを遷移。 |
ons-tabbarのイベント
index5.html
<ons-tabbar var="myNavigator"> <ons-tab page="top.html" label="トップ" icon="fa-home" active="true"></ons-tab> <ons-tab page="tab1.html" label="タブ1" icon="fa-search"></ons-tab> <ons-tab page="tab2.html" label="タブ2" icon="fa-star"></ons-tab> <ons-tab page="tab3.html" label="タブ3" icon="fa-gear"></ons-tab> </ons-tabbar>
JavaScript
ons.ready(function() {
myNavigator.on('prechange', function(e) {
console.group('prechange');
console.log(e.index);
console.log(e.tabItem);
console.groupEnd();
// タブ1へのページ遷移をキャンセル
if(e.index == 3) {
e.cancel();
}
});
myNavigator.on('postchange', function(e) {
console.group('postchange');
console.log(e.index);
console.log(e.tabItem);
console.groupEnd();
});
});
| prechange | アクティブなタブが変更される前に発火。 |
|---|---|
| postchange | アクティブなタブが変更された後に発火。 |
【参考サイト】
コメントが承認されるまで時間がかかります。