HTML 5之Pages&Dialogs
Jquery Mobile里的一個(gè)Page并非同于我們的一個(gè)html頁(yè)面;而是一個(gè)一個(gè)基于它的Page容器的一個(gè)div ;這就允許我們可以再一個(gè)html文件中創(chuàng)建多個(gè)Page頁(yè)面,這樣的好處是,在客戶端發(fā)送請(qǐng)求后僅需要請(qǐng)求一次html內(nèi)容;其它的各種功能和操作都已經(jīng)到客戶端了;而且html也只是各種框架性的結(jié)構(gòu),內(nèi)容的操作要基于js的Ajax請(qǐng)求;這樣才能給用戶超普通website的體驗(yàn);當(dāng)然如果大量的html Tag在***次請(qǐng)求就返回給客戶端將會(huì)導(dǎo)致請(qǐng)求慢,渲染慢等問(wèn)題;所以我們需要做適當(dāng)?shù)膭澐?,而?**渲染的html內(nèi)容要盡量少(推薦使用jquery Template);而且框架支持多page,多頁(yè)面切換時(shí)的效果動(dòng)畫(huà),還可以將頁(yè)面顯示為對(duì)話框形勢(shì);
不同的是,在處理鏈接外部頁(yè)面、鏈接同頁(yè)面的”Page”,后退、重定向及目錄鏈接有所不同;這會(huì)在下面詳細(xì)介紹;
頁(yè)面
Jquery Mobile是基于HTML5的,Jquery Mobile網(wǎng)站必須使用HTML5文檔聲明開(kāi)始;我們要使用它的主題css,所以在頁(yè)面Title里需要引用對(duì)應(yīng)的主題css樣式文件還有js庫(kù);當(dāng)然具體引用路徑要看這些文件是怎么組織的了;
- <!DOCTYPE html>
- <html>
- <head>
- <title>Easy 酒店</title>
- <meta name="viewport" content="width=device-width, initial-scale=1">
- <link href="../css/jquery.mobile.structure-1.1.0.css" rel="stylesheet" type="text/css" />
- <link href="../theme/lightGray/EH_lightGray.css" rel="stylesheet" type="text/css" />
- <link href="../css/Common.css" rel="stylesheet" type="text/css" />
- <script src="../js/jquery-1.7.2.js" type="text/javascript"></script>
- <script src="../js/jquery.mobile-1.1.0.js" type="text/javascript"></script>
- </head>
Jquery Mobile的”Page”是一個(gè)帶有data-role="page"的div容器,這個(gè)容器一般有三個(gè)直接div子節(jié)點(diǎn)而且分別用data-role="header",data-role=”content”,data-role=”footer”標(biāo)記;這主要是做區(qū)域劃分,即將這個(gè)Page容器分割為頭、內(nèi)容、腳三塊;然后開(kāi)發(fā)者再分別在不同塊里添加其他內(nèi)容;http://jquerymobile.com/demos/1.1.0/docs/api/data-attributes.html這里你可以看到所有你可以使用的屬性標(biāo)簽;
- <!DOCTYPE html>
- <html>
- <head>
- <title>Easy 酒店</title>
- <meta name="viewport" content="width=device-width, initial-scale=1">
- <link href="../css/jquery.mobile.structure-1.1.0.css" rel="stylesheet" type="text/css" />
- <link href="../theme/lightGray/EH_lightGray.css" rel="stylesheet" type="text/css" />
- <link href="../css/Common.css" rel="stylesheet" type="text/css" />
- <script src="../js/jquery-1.7.2.js" type="text/javascript"></script>
- <script src="../js/jquery.mobile-1.1.0.js" type="text/javascript"></script>
- </head>
- <body>
- <div data-role="page">
- <div data-role="header">
- <h1>Easy Hotel</h1>
- </div><!-- /header -->
- <div data-role="content">
- <p>Page content goes here.</p>
- </div><!-- /content -->
- <div data-role="footer">
- <h4>©Johnny2012 Mail:johnny@163.com</h4>
- </div><!-- /footer -->
- </div><!-- /page -->
- </body>
- </html>
這樣它就已經(jīng)有效果了,這就是一個(gè)簡(jiǎn)單的Page頁(yè)了;
內(nèi)部鏈接如何多頁(yè)
既然每個(gè)page都只是一個(gè)帶有data-role=”page”的div,那我們?cè)谖覀兊捻?yè)面上多創(chuàng)幾個(gè)了;關(guān)于他們之間怎么互鏈,只需要給各個(gè)Page的div添加ID屬性,鏈接時(shí)href制定為#pageID就可以了
- <div id="pageSearch" data-role="page">
- <div data-role="header">
- <h1>Easy Hotel</h1>
- </div><!-- /header -->
- <div data-role="content">
- <a href="#pageList">List Page</a>
- </div><!-- /content -->
- <div data-role="footer">
- <h4>Easy Hotel</h4>
- </div><!-- /footer -->
- </div><!-- /page -->
- <div id="pageList" data-role="page">
- <div data-role="header">
- <h1>Hotel List</h1>
- </div><!-- /header -->
- <div data-role="content">
- <a href="#pageDetail">Detail Page</a>
- </div><!-- /content -->
- <div data-role="footer">
- <h4>Easy Hotel</h4>
- </div><!-- /footer -->
- </div><!-- /page -->
- <div id="pageDetail" data-role="page">
- <div data-role="header">
- <h1>Hotel Detail</h1>
- </div><!-- /header -->
- <div data-role="content">
- <p>Detail Page</p>
- </div><!-- /content -->
- <div data-role="footer">
- <h4>Easy Hotel</h4>
- </div><!-- /footer -->
- </div><!-- /page -->
以上是內(nèi)鏈,當(dāng)鏈接被點(diǎn)擊時(shí),Jquery moblie會(huì)在文檔內(nèi)尋找?guī)в蠭D的page容器,然后使用效果顯示它;
外部鏈接
jqueyr mobile在加載外部鏈接(鏈接到另一個(gè)獨(dú)立應(yīng)用頁(yè)面文件)會(huì)自動(dòng)構(gòu)建AJAX驅(qū)動(dòng)的站點(diǎn)和應(yīng)用;默認(rèn)情況下,當(dāng)你點(diǎn)擊了一個(gè)指向外部頁(yè)面(比如:http://www.cnblogs.com/yoainet/archive/2012/04/27/2473647.html)的鏈接,JQ moblie會(huì)分析鏈接地址,然后產(chǎn)生一個(gè)ajax請(qǐng)求(Hajax),顯示一個(gè)讀取中的提示框。如果AJAX請(qǐng)求成功,新頁(yè)面的內(nèi)容會(huì)添加到DOM中,所有MOBILE組件都會(huì)自動(dòng)初始化,所以新的頁(yè)面會(huì)通過(guò)顯示動(dòng)畫(huà)顯示出來(lái);如果AJAX請(qǐng)求失敗,JQ moblie會(huì)顯示一個(gè)小錯(cuò)誤提示框(默認(rèn)的主題為E),然后過(guò)一會(huì)就消失了,不會(huì)影響你繼續(xù)瀏覽;
后退鏈接
當(dāng)你希望按鈕有后退功能時(shí)只需要給它設(shè)置data-rel="back"屬性,同時(shí)會(huì)忽略掉它的href鏈接,從而后退到瀏覽器上一個(gè)頁(yè)面;
- <a data-role="button" data-rel="back" href="#pageDetail" data-icon="back">Back</a>
頁(yè)面切換效果
要想定義頁(yè)面切換效果,只需要在鏈接上添加對(duì)應(yīng)的data-transition就可以了,默認(rèn)效果是fade;
<a href="#pageList" data-transition="slide">List Page</a> <br />
這樣你就可以看到頁(yè)面在切換時(shí)效果變?yōu)槔降牧耍?/p>
原文鏈接:http://www.cnblogs.com/yoainet/archive/2012/04/28/2474763.html