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