mui底部选项卡切换页面的两种模式

两种模式的区别:

       DIV模式是将所有子页面的内容,分别放置到主页不同的DIV中,当我们点击主页的不同选项卡时,切换不同DIV的显示。 这种方式显然要比加载子页的方式快很多,但是也显然不能承载很多布局的页面,毕竟要在一个主页中写入所有子页面的代码,显得不太现实。

      而WebView模式则是将所有子页面都写入到不同的子页面中,再通过主页连接到一起,点击不同的选项卡 ,加载不同的子页面,显然这种方式更符合我们的预期和要求。

1.底部选项卡切换(DIV模式):


 
 
  1.   <header class= "mui-bar mui-bar-nav">
  2.             <a class= "mui-action-back mui-icon mui-icon-left-nav mui-pull-left"></a>
  3.             <h1 class= "mui-title">底部选项卡切换(Div模式)</h1>
  4.         </header>
  5.         
  6.         <nav class= "mui-bar mui-bar-tab">
  7.             <a class= "mui-tab-item mui-active" href= "#page1">
  8.                 <span class= "mui-icon mui-icon-home"></span>
  9.                 <span class= "mui-tab-label">首页</span>
  10.             </a>
  11.             <a class= "mui-tab-item" href= "#page2">
  12.                 <span class= "mui-icon mui-icon-phone"></span>
  13.                 <span class= "mui-tab-label">电话</span>
  14.             </a>
  15.             <a class= "mui-tab-item" href= "#page3">
  16.                 <span class= "mui-icon mui-icon-email"></span>
  17.                 <span class= "mui-tab-label">邮件</span>
  18.             </a>
  19.             <a class= "mui-tab-item" href= "#page4">
  20.                 <span class= "mui-icon mui-icon-gear"></span>
  21.                 <span class= "mui-tab-label">设置</span>
  22.             </a>
  23.         </nav>
  24.         
  25.         
  26.         <div class= "mui-content">
  27.             <div id= "page1" class= "mui-control-content mui-active">
  28.                 这是第一个页面
  29.             </div>
  30.             <div id= "page2" class= "mui-control-content">
  31.                 这是第二个页面
  32.             </div>
  33.             <div id= "page3" class= "mui-control-content">
  34.                 这是第三个页面
  35.             </div>
  36.             <div id= "page4" class= "mui-control-content">
  37.                 这是第四个页面
  38.             </div>
  39.         </div>

     

底部选项卡切换(WebView模式):


 
 
  1. <header class= "mui-bar mui-bar-nav">
  2. <a class="mui-action-back mui-icon mui-icon-left-nav mui-pull-left"></a>
  3. <h1 class= "mui-title" id= "title">首页< /h1>
  4. </header>
  5. <nav class="mui-bar mui-bar-tab">
  6. <a id="defaultTab" class="mui-tab-item mui-active" href="a.html">
  7. <span class="mui-icon mui-icon-home"> </span>
  8. <span class="mui-tab-label">首页 </span>
  9. </a>
  10. <a class="mui-tab-item" href="b.html">
  11. <span class="mui-icon mui-icon-email"> </span>
  12. <span class="mui-tab-label">消息 </span>
  13. </a>
  14. <a class="mui-tab-item" href="c.html">
  15. <span class="mui-icon mui-icon-contact"> </span>
  16. <span class="mui-tab-label">通讯录 </span>
  17. </a>
  18. <a class="mui-tab-item" href="d.html">
  19. <span class="mui-icon mui-icon-gear"> </span>
  20. <span class="mui-tab-label">设置 </span>
  21. </a>
  22. </nav>
  23. //js部分
  24. var subpages = [ 'a.html', 'b.html', 'c.html', 'd.html'];
  25. var subpage_style = {
  26. top: '45px',
  27. bottom: '51px'
  28. };
  29. var aniShow = {};
  30. //创建子页面,首个选项卡页面显示,其它均隐藏;
  31. mui.plusReady( function() {
  32. var self = plus.webview.currentWebview();
  33. for ( var i = 0; i < 4; i++) {
  34. var temp = {};
  35. var sub = plus.webview.create(subpages[i], subpages[i], subpage_style);
  36. if (i > 0) {
  37. sub.hide();
  38. }
  39. /* 让新创建的webview,追加合并到当前的窗口上。合并成一个窗口。
  40. * 目的:将父子窗口合并成一个页面,实现同开同关的效果。 避免点击返回安监室,子页面先关闭,而父页面的头部和尾部没有关闭的BUG。
  41. */
  42. self.append(sub);
  43. }
  44. });
  45. //当前激活选项
  46. var activeTab = subpages[ 0];
  47. var title = document.getElementById( "title");
  48. //选项卡点击事件
  49. mui( '.mui-bar-tab').on( 'tap', 'a', function(e) {
  50. var targetTab = this.getAttribute( 'href');
  51. if (targetTab == activeTab) {
  52. return;
  53. }
  54. //更换标题
  55. title.innerHTML = this.querySelector( '.mui-tab-label').innerHTML;
  56. //显示目标选项卡
  57. //若为iOS平台或非首次显示,则直接显示
  58. if(mui.os.ios||aniShow[targetTab]){
  59. plus.webview.show(targetTab);
  60. } else{
  61. //否则,使用fade-in动画,且保存变量
  62. var temp = {};
  63. temp[targetTab] = "true";
  64. mui.extend(aniShow,temp);
  65. plus.webview.show(targetTab, "fade-in", 300);
  66. }
  67. //隐藏当前;
  68. plus.webview.hide(activeTab);
  69. //更改当前活跃的选项卡
  70. activeTab = targetTab;
  71. });

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值