天天看点

MUI底部选项卡实现页面切换

在用mui设计app总体框架时,基本需要实现点击底部选项卡切换页面的功能,在官方demo中对底部选项卡有几种选择,但是将demo复制过来时页面切换的效果并没有成功实现。本篇文章在demo的基础上进行修改,实现该效果。

  1. 定义一个subpages数组存放子页面id,设置子页面样式
var subpages = ['html/people.html', 'html/key.html', 'html/lock.html', 'html/signment.html', 'html/log.html'];
var subpage_style = {
				top: '0px',
				bottom: '51px'
			};
           
  1. 创建子页面,显示首个选项卡页面,其余页面均隐藏
mui.plusReady(function() {
				var self = plus.webview.currentWebview();
				for (var i = 0; i < subpages.length; i++) {
					var temp = {};
					var sub = plus.webview.create(subpages[i], subpages[i], subpage_style);
					if (i > 0) {
						sub.hide();
					} else {
						temp[subpages[i]] = "true";
						self.append(sub);
					}
				}
			});
           

定义self来获取当前页面,从之前定义的数组中循环,选取第一个页面进行展示,其余页面利用hide()函数隐藏

  1. 激活当前选项
//当前激活选项
			var activeTab = subpages[0];
			var title = document.getElementById("title");
			//选项卡点击事件
			mui('.mui-bar-tab').on('tap', 'a', function(e) {
				var targetTab = this.getAttribute('href');
				if (targetTab == activeTab) {
					return;
				}
				//更换标题
				//title.innerHTML = this.querySelector('.mui-tab-label').innerHTML;
				//显示目标选项卡
				//若为iOS平台或非首次显示,则直接显示
				if (mui.os.ios || aniShow[targetTab]) {
					plus.webview.show(targetTab);
				} else {
					//否则,使用fade-in动画,且保存变量
					var temp = {};
					temp[targetTab] = "true";
					mui.extend(aniShow, temp);
					plus.webview.show(targetTab, "fade-in", 300);
				}
				//隐藏当前;
				plus.webview.hide(activeTab);
				//更改当前活跃的选项卡
				activeTab = targetTab;
			});
           
  1. 选项卡高亮显示
//自定义事件,模拟点击“首页选项卡”
			document.addEventListener('gohome', function() {
				var defaultTab = document.getElementById("defaultTab");
				//模拟首页点击
				mui.trigger(defaultTab, 'tap');
				//切换选项卡高亮
				var current = document.querySelector(".mui-bar-tab>.mui-tab-item.mui-active");
				if (defaultTab !== current) {
					current.classList.remove('mui-active');
					defaultTab.classList.add('mui-active');
				}
			});
           

继续阅读