mui底部导航切换

mui底部导航切换

本篇笔记主要分享mui框架下底部导航菜单的切换。其实关于底部导航菜单的切换在网上有很多教程。那么波波为啥还要再分享一下呢?原因其实很简单,别人分享的不好用。

首先我们看mui底部导航的html部分代码,大家也可以用mT来一键生成(仅hbuilder中有效)。

  1. <nav class="mui-bar mui-bar-tab">
  2.             <a class="mui-tab-item mui-active" href="index.html" target="_self">
  3.                 <span class="mui-icon mui-icon-home"></span>
  4.                 <span class="mui-tab-label">首页</span>
  5.             </a>
  6.             <a class="mui-tab-item" href="square.html" target="_self">
  7.                 <span class="mui-icon iconfont iconfenleiorguangchangorqita"></span>
  8.                 <span class="mui-tab-label">广场</span>
  9.             </a>
  10.             <a class="mui-tab-item"  href="reading.html" target="_self">
  11.                 <span class="mui-icon iconfont icontushu"></span>
  12.                 <span class="mui-tab-label">读书</span>
  13.             </a>
  14.             <a class="mui-tab-item" href="ucenter.html" target="_self">
  15.                 <span class="mui-icon iconfont iconyonghu"></span>
  16.                 <span class="mui-tab-label">我的</span>
  17.             </a>
  18.         </nav>

第一种方法,也是网上大家采用较多的webview这种方式可以在生成APP时达到很好的切换效果,但是不足之处是普通浏览器无法使用,如果再单独去做兼容,代码冗余较多。

  1. //创建子页面
  2. var subpages = ['index.html','square.html','reading.html','ucenter.html'];
  3. var subpage_style = {
  4.     top: '0px',
  5.     bottom: '50px',
  6.     scrollIndicator: "none" ,// 当你的界面的内容足够多的时候,会出现滚动条,这个是隐藏滚动条
  7. };
  8. //创建子页面,首个选项卡页面显示,其它均隐藏;
  9. mui.plusReady(function(){
  10.     //获得当前页面
  11.     var self = plus.webview.currentWebview();
  12.     //循环创建子页面
  13.     for(var i=0;i<subpages.length;i++){
  14.         var sub = plus.webview.create(subpages[i],subpages[i],subpage_style);
  15.         var sub = plus.webview.create(
  16.             'a.html',
  17.             'a.html',{
  18.     top: '0px',
  19.     bottom: '50px',
  20.     scrollIndicator: "none" ,// 当你的界面的内容足够多的时候,会出现滚动条,这个是隐藏滚动条
  21. });
  22.         if(i>0){
  23.             sub.hide();
  24.         }
  25.         self.append(sub);
  26.     }
  27. });
  28. //当前激活选项卡
  29. var activeTab = subpages[0];
  30. //选项卡点击事件
  31. mui('.mui-bar-tab').on('tap', 'a', function(e) {
  32.     var targetTab = this.getAttribute('href');
  33.     if (targetTab == activeTab) {
  34.             return;
  35.     }
  36.     //显示目标选项卡
  37.     plus.webview.show(targetTab);
  38.     //隐藏当前;
  39.     plus.webview.hide(activeTab);
  40.     //更改当前活跃的选项卡
  41.     activeTab = targetTab;
  42. });
  43. //自定义事件,模拟点击“首页选项卡”
  44. document.addEventListener('gohome',function () {
  45.     var defaultTab = document.getElementById("defaultTab");
  46.     //模拟首页点击
  47.     mui.trigger(defaultTab,'tap');
  48.     //切换选项卡高亮
  49.     var current = document.querySelector(".mui-bar-tab>.mui-tab-item.mui-active");
  50.     if(defaultTab!==current){
  51.         current.classList.remove('mui-active');
  52.         defaultTab.classList.add('mui-active');
  53.     }
  54. });

第二种方法。原生写法,兼容多端。这也是波波本篇笔记分享的重点。优点是代码简洁,兼容性好,缺点是页面切换时如果涉及外部加载,则会出现白屏现象。

  1. mui('.mui-bar-tab').on('tap','a',function(e){
  2.     var targetTab = this.getAttribute('href');
  3.     mui.openWindow(targetTab);
  4. })

好了,本篇笔记就分享这么多,有其他更优解决方案的朋友也欢迎留言。

你想把广告放到这里吗?

发表评论

您必须 登录 才能发表留言!