两种模式的区别:

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

 

 

两种模式的区别: