mui開發app教程-2

上一章:mui開發app教程-1

目錄

功能1:選項卡事件綁定

選項卡綁定頁面鏈接

創建頁面

選項卡綁定鏈接

主板頁面設計

1、plus.webview.create

2、plus.webview.currentWebview().append()

3、plus.webview.show

4、plus.webview.hide

代碼實現

選項卡點擊測試

功能2:app-狀態欄佈局

沉浸式於非沉浸式

1、採用沉浸式

2、採用非沉浸式

開啓沉浸式

配置文件位置

配置內容

效果驗收

功能3:app頁面模板設計

風格設計

第一屏頁面

新開頁面

頂部title區域設計

html代碼

css代碼

效果

中間內容區域設計

位置分析

子窗口區域

html代碼

css代碼


功能1:選項卡事件綁定

上一章,說了給當前的app添加選項卡,但是這個時候的選項卡,除了點擊顏色會變之外,沒有其他的功能了。但是實際上我們用app的時候,點擊選項卡的選項的時候,會跳轉到對應的頁面。注意,這邊說的是跳轉頁面,因爲mui的官方給的demo其實就是在當前同一個頁面裏頭跳來跳去,有點像vue的路由。

選項卡綁定頁面鏈接

要跳轉的頁面要實現創建好

創建頁面

選項卡綁定鏈接

其實就是給選項卡的a標籤添加href屬性值

<nav class="mui-bar mui-bar-tab">
		<a class="mui-tab-item mui-active" href="html/home.html">
			<span class="mui-icon mui-icon-home"></span>
			<span class="mui-tab-label">首頁</span>
		</a>
		<a class="mui-tab-item" href="html/message.html">
			<span class="mui-icon mui-icon-email"></span>
			<span class="mui-tab-label">消息</span>
		</a>
		<a class="mui-tab-item" href="html/sign.html">
			<span class="mui-icon mui-icon-list"></span>
			<span class="mui-tab-label">點名</span>
		</a>
		<a class="mui-tab-item" href="html/contact.html">
			<span class="mui-icon mui-icon-contact"></span>
			<span class="mui-tab-label">聯繫人</span>
		</a>
		<a class="mui-tab-item" href="html/notice.html">
			<span class="mui-icon mui-icon-paperplane"></span>
			<span class="mui-tab-label">通知</span>
		</a>
	</nav>

主板頁面設計

主板頁面就是在第一屏的頁面,總共有5個,包括首頁,消息,點名,聯繫人,通知。

頁面的顯示需要使用

1、plus.webview.create

表示創建一個子窗口,沒錯,就是把選項卡頁面當做主窗口,其他的主板頁面當做主窗口的子窗口,這些子頁面都是通過該方式來生成。(生成的時候需要注意設置子頁面的位置)

2、plus.webview.currentWebview().append()

表示將子窗口添加到主窗口。

3、plus.webview.show

表示顯示被隱藏的已經創建好的子窗口

4、plus.webview.hide

表示隱藏被顯示的已經創建好的子窗口

 

代碼實現

上一個步驟的關鍵代碼如下:

// 全局子頁面在主頁面的位置樣式
	var subpage_style = {
		top: '0px',
		bottom: '51px',
	};
 
 // 下面的代碼寫在mui.plusReady裏頭
 var self = plus.webview.currentWebview();
		//當前激活選項 
		var activeTab = "html/home.html";
		var current = plus.webview.getWebviewById(activeTab);
		if (current==null) {
			current = plus.webview.create(activeTab, activeTab, subpage_style);
			self.append(current);
		} else {
			current.show();
		}
		
		var aniShow = {};
		aniShow[activeTab] = "true";
		
		//選項卡點擊事件
		mui('.mui-bar-tab').on('tap', 'a', function(e) {
			var targetTab = this.getAttribute('href');
			
			if(targetTab == activeTab) {
				return;
			}
			
			//顯示目標選項卡
			//若爲iOS平臺或非首次顯示,則直接顯示
			if(mui.os.ios || aniShow[targetTab]) {
				if (plus.webview.getWebviewById(targetTab)==null) {
					var current = plus.webview.create(targetTab, targetTab, subpage_style);
					self.append(current);
				} else {
					plus.webview.show(targetTab);
				}
			} else { 
				//否則,使用fade-in動畫,且保存變量
				var temp = {};
				temp[targetTab] = "true";
				mui.extend(aniShow, temp);
				if (plus.webview.getWebviewById(targetTab)==null) {
					var current = plus.webview.create(targetTab, targetTab, subpage_style);
					self.append(current);
				} else {
					plus.webview.show(targetTab, "fade-in", 300);
				}
			}
		
			
			//隱藏當前;
			plus.webview.hide(activeTab);
			//更改當前活躍的選項卡
			activeTab = targetTab;

選項卡點擊測試

往剛剛創建好的每個子頁面裏頭添加一些不一樣的文字。

點擊選項卡,可以看到點擊不同選項卡,顯示對應頁面的內容。那麼就成功了

 

功能2:app-狀態欄佈局

沉浸式於非沉浸式

現有的app的狀態欄佈局整體有兩種:

1、採用沉浸式

這種方式:app的內容會融入到狀態欄,如:

2、採用非沉浸式

這種方式:app的內容會呈現在狀態欄下方,如:

總結:

說白了,就是狀態欄要不要呈現內容,比如我們看優酷視頻的時候,頂部的狀態欄也有視頻影像。

 

開啓沉浸式

本次我要做的app大概是一個校園工具類的app,我打算採用沉浸式佈局。可以通過manifest設置全局範圍內都使用沉浸式佈局。

配置文件位置

配置內容

參數解釋:

immersed:開啓沉浸式

style:設置狀態欄樣式(light:表示狀態文字顏色爲白色)

background:設置狀態欄背景色

"statusbar": {
			"immersed": "supportedDevice",
			"style": "light",
			"background" : "#fff"
		},

效果驗收

配置完之後,重新運行項目,會發現,子窗口裏頭的內容會頂到整個頁面的最上方,即部分文字和狀態欄的系統文字信息重疊了,那麼設置就成功了。

 

功能3:app頁面模板設計

上一步,我們已經完成了對app的基礎的所有配置。那麼爲了後續開發方便,我們必須明確所有(或者大部分)的頁面的共有風格。

我這邊定下來的風格大概就是跟qq或者企業微信一樣的效果。

即:

風格設計

第一屏頁面

頂部顯示title,中間是內容,下面是選項卡

新開頁面

新開頁面就是隻由第一屏頁面點擊打開的頁面,這種頁面一般麼有選項卡。佈局就比較簡單了:頂部顯示title,中間是內容。

 

頂部title區域設計

html代碼

頂部title我設置的色調是淺藍色,然後是直接使用mui給的頂部導航欄模板,並在class裏頭添加了一個mui-fix-bar的樣式(這個樣式是用來重寫mui關於導航欄的默認樣式的)

<header class="mui-bar mui-bar-nav mui-fix-bar">
			<h1 class="mui-title">首頁</h1>
		</header>

css代碼

默認的導航欄的高度是44,顏色是白色,而且是帶有陰影的,這不是我想要的效果。所以同構mui-fix-bar樣式名,我在mui.css裏頭新增了一條樣式表,來覆蓋默認的樣式,同時重寫mui-title的樣式:

.mui-fix-bar {
	height: 60px!important;
	background-color: #007AFF!important;
	padding-top: 20px;
	box-shadow: 0 0 0;
}
/* 將文字顏色覆蓋爲白色 */
.mui-fix-bar .mui-title{
	color: white!important;
}

效果

這邊有些人可能糾結你們的正文內容被導航欄覆蓋的問題,這個別擔心,下面會講到。

中間內容區域設計

中間內容區域很多人到現在還是不理解,到底是哪是哪。哈哈,莫急,我來解釋:

位置分析

中間區域就是扣除掉頂部title區域和底部選項卡區域,剩餘的你能看的到的區域就是中間內容區域。

下面圖解的:黃色表示頂部區域,綠色表示中間內容區域,紅色表示底部選項卡區域

子窗口區域

子窗口區域就是黃+綠,就是頂部區域+黃色區域

我們通過固定定位,將頂部固定,將中間固定,以此來完全佔據整個子窗口

 

html代碼

中間區域的代碼,我自己設計如下(加了一個樣式名mui-body,用來在mui.css裏頭設置全局的樣式):

<section class="mui-body">
			首頁<br>
			
			<h1>測試一下</h1>
		</section>

css代碼

.mui-body{
	padding-top: 5px;
	position: fixed;
	top: 60px;
}

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章