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