成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

使用jQuery Mobile框架將博客快速轉化為Mobile網站

移動開發 移動應用
jQuery Mobile是一個非常不錯的移動端網站應用的解決方案,很多網站都使用jQuery Mobile來生成Mobile手機端的移動網站應用,在過去的GBin1博客文章中,我們曾經使用jQuery Mobile利用RSS訂閱生成過一個簡單的RSS閱讀手機端,在今天的教程中,我們將講解如何將GBin1網站完整的轉化為一個全功能的移動端網站,主要的技術使用jQuery Mobile和Java的SiteMesh布局類庫

使用jQuery Mobile移動開發框架將博客網站快速轉化為Mobile網站

在線演示

jQuery Mobile是一個非常不錯的移動端網站應用的解決方案,很多網站都使用jQuery Mobile來生成Mobile手機端的移動網站應用,在過去的GBin1博客文章中,我們曾經使用jQuery Mobile利用RSS訂閱生成過一個簡單的RSS閱讀手機端,在今天的教程中,我們將講解如何將GBin1網站完整的轉化為一個全功能的移動端網站,主要的技術使用jQuery Mobile和Java的SiteMesh布局類庫

系統設計分析

在我們正式的開始開發之前,我們需要大概的分析一下如何設計Mobile網站,很多網站的移動端應用和網站的內容是分離的,也就是說,桌面訪問網站和移動設備訪問網站的路徑是不同的。

  • 好處是可以分別開發獨立的功能,我們可以針對移動端的用戶設計獨立的UI,展現方式,或者使用方式,往往對于比較大型的網站或者已經上線很久的網站這樣設計成本比較低。
  • 壞處是你需要獨立的維護兩套代碼,無形的增加了開發成本和維護成本 

在我們GBin1的移動設備網站開發中,我們本著盡量維護同一套代碼的原則,希望能夠直接重用網站的頁面內容和框架。值得一提的是,GBin1架 構使用Sitemesh的模板布局功能來生成頁面的不同樣式和布局,而相關的頁面內容及其附屬功能,例如,留言等等都是由靜態頁面或者功能模塊生成,這樣 的設計使得我們可以利用已經存在的頁面內容花最小的代價來創建新的移動設備模板,因而可以快速的生成新的移動端web應用,而且整體結構及其閱讀使用方式 將會和網站本身的使用方式類似,降低了用戶的學習成本。

如何實現?

為了讓系統能夠自動處理應用不同的模板,這里我們使用了一個小技巧:

我們創建一個2級域名, 例如, http://m.gbin1.com,將它通過域名綁定了我們的服務器。然后通過后臺的應用來判斷當前的域名訪問,如果用戶通過http://www.gbin1.com來訪問的話,我們將應用網站模板,如果用戶嘗試使用http://m.gbin1.com來訪問gbin1的時候,我們將使用移動設備模板來展示網站內容。通過這種方法,系統能夠自動的應用不同的模板生成不同的web應用界面。

當然,我們也可以做的更好,自動判斷客戶端的代理類型,如果是移動設備,自動重定向到http://m.gbin1.com,否則重定向到http://www.gbin1.com。

代碼實現

設計和實現基本完成以后,我們正式開始開發網站的移動設備模板,使用jQuery Mobile框架。使用jQuery Mobile框架的好處在于,考慮了不同手機的兼容性并且封裝了現成的UI組件,我們只需要簡單的添加幾個html標簽即可生成對應的頁面,如下:

  1. <div data-role="page"> 
  2.     <div data-role="header"> 
  3.         <a href="/bloghome.html" data-icon="help">首頁</a> 
  4.         <h1 id="logo"></h1> 
  5.         <a href="/portfolio/" data-icon="info">關于</a> 
  6.         <div data-role="navbar" data-iconpos="top" data-theme="a"> 
  7.             <nav> 
  8.  
  9.             </nav> 
  10.         </div><!-- /navbar --> 
  11.     </div><!-- /header --> 
  12.  
  13.     <div data-role="content">    
  14.  
  15.     </div><!-- /content --> 
  16.  
  17.     <div data-role="footer">  
  18.         <h4>&copy; Copywrite by gbin1.com, all rights reserved.</h4>  
  19.     </div>  
  20. </div><!-- /page --> 

以上代碼我們定義了,頁頭,內容和頁腳。

在頁頭中我們添加了兩個按鈕, 首頁和關于

頁腳中我們添加了版權相關信息。

生成頁面內容如下:

m.gbin1.com

為了更好在不同的移動設備上看到展示效果,這里我們使用一個在線測試響應式設計的web工具- Screenqueri.es,使用它能夠幫助你在不同的移動設備上查看網站效果,同時它支持本地localhost應用查看效果,支持不同設備上的預覽,例如,iphone,ipad及其其它設備,并且支持橫豎屏切換,所以對于我們在線調試非常有幫助。

添加相關代碼

接下里我們需要添加一些相關代碼來處理移動設備中的顯示,包括:

  • 圖片
  • 視頻
  • 其它

因為不同的設備的顯示界面尺寸不一樣,為了能夠在小尺寸的設備上正常的顯示頁面,我們需要在加載頁面之前,處理相關圖片,或者視頻的尺寸大小。代碼如下:

  1. $(document).bind('pageinit' , function(){ 
  2.  
  3.     $('img').css({ 
  4.         'max-width':'280px'
  5.         'height':'auto' 
  6.     }); 
  7.  
  8. }); 

注意我們在以上代碼中調用了css方法來處理圖片,這里為了簡單,我們直接將圖片設置為最大寬大為280px,如果你需要支持不同的設備,你可以根據設備不同,處理不同的圖片寬度。

再 請注意這里我們使用了pageinit方法,在正常的jQuery開發中,我們一般使用document.ready() 方法來處理,但是對于jQuery mobile來說,當頁面導航的時候Ajax被用來加載頁面內容,所以DOM ready方法只存在于第一個加載頁面,為了能夠讓每一個頁面都可以執行代碼,所以我們需要在頁面初始化(pageinit)方法中調用相關方法,否則你 會看到除了第一個頁面外以后其它頁面的圖片沒有任何變化。

如果你有其它的代碼需要在也頁面中調用的話,你同樣也可以加載到上面的方法中去。如下:

  1. $(document).bind('pageinit' , function(){ 
  2.  
  3.     $('img').css({ 
  4.         'max-width':'280px'
  5.         'height':'auto' 
  6.     }); 
  7.  
  8.     $('a').each(function(){ 
  9.         var url = $(this).attr('href'); 
  10.         var laststr = url.lastIndexOf(".html"); 
  11.         var lastc = url.charAt(url.length-1); 
  12.         var startc = url.charAt(0); 
  13.         if(laststr<0&&lastc!=='/'&&startc!=='?'){ 
  14.             $(this).attr('href'url + '/'); 
  15.         } 
  16.     }); 
  17.  
  18. }); 

在我們的代碼中,我們需要處理圖片及其url中的地址問題,所以我們將相關的代碼放置到pageinit中。

完整模板代碼如下:

  1. <!DOCTYPE html> 
  2. <!-- By GBin1.com--> 
  3. <%@ page contentType="text/html;charset=utf-8"%> 
  4. <%@ taglib uri="gbin1cms-taglib" prefix="cms" %> 
  5.  
  6. <jsp:useBean id="userInfo" scope="session" class="com.gbin1.core.UserInfo" /> 
  7. <jsp:useBean id="webSite" scope="request" type="com.gbin1.core.WebSite" /> 
  8.  
  9. <html> 
  10. <head> 
  11.         <title><cms:pagetitle /></title> 
  12.         <meta name="description" content="<cms:info id="description" />" /> 
  13.         <meta name="keywords" content="<cms:info id="keywords" />" /> 
  14.         <meta name="author" content="<cms:info id="author" /> (<cms:info id="authorurl" />)" />      
  15.         <link rel="stylesheet" href="http://code.jquery.com/mobile/1.1.0/jquery.mobile-1.1.0.min.css" /> 
  16.         <script src="http://code.jquery.com/jquery-1.7.1.min.js"></script> 
  17.         <script src="http://code.jquery.com/mobile/1.1.0/jquery.mobile-1.1.0.min.js"></script> 
  18.         <cms:pagehead />  
  19.         <style> 
  20.             #logo{ 
  21.                 background: url('/gbin1/themes/gbin1_mobile/images/logo.png') no-repeat 50% 50%; 
  22.                 height: 30px; 
  23.             } 
  24.  
  25.             #navlist{ 
  26.                 font-size:14px; 
  27.             } 
  28.  
  29.             .ui-btn-text{ 
  30.                 font-size:12px; 
  31.             } 
  32.  
  33.             H1,H2,H3,H4,H5,H6,H7,H8,H9,H10{ 
  34.                 font-size:14px; 
  35.             } 
  36.  
  37.             .ui-header .ui-title{ 
  38.                 font-size:14px; 
  39.             } 
  40.  
  41.             .ui-footer .ui-title{ 
  42.                 font-size:12px; 
  43.                 font-weight: normal; 
  44.             } 
  45.  
  46.             .ui-body-c .ui-link { 
  47.                 text-decoration: none; 
  48.                 font-size:14px; 
  49.                 font-weight: normal; 
  50.             } 
  51.             .ui-btn-text{ 
  52.                 font-weight: normal; 
  53.             } 
  54.             .ui-body-c{ 
  55.                 font-size:14px; 
  56.                 line-height: 20px; 
  57.             } 
  58.             .includetitle{ 
  59.                 background: #E1E1E1; 
  60.                 padding: 5px 5px; 
  61.                 border-left: 3px solid #BBB; 
  62.                 border-radius: 3px 3px 3px 3px; 
  63.             } 
  64.  
  65.             .includenavigation .ui-link, .includenavigation .ui-link:visited{ 
  66.                 color: #ffffff; 
  67.                 text-shadow: 0px 0px 20px #CCC; 
  68.             } 
  69.  
  70.             .includereadmore{ 
  71.                 text-align: right; 
  72.                 padding: 5px; 
  73.                 width: auto; 
  74.                 border-top: 1px solid #CCC; 
  75.             } 
  76.  
  77.             .includenavigation{ 
  78.                 color: #909090; 
  79.                 font-weight: bold; 
  80.             } 
  81.         </style> 
  82.         <script>             
  83.  
  84.             $(document).bind('pageinit' , function(){ 
  85.  
  86.                 $('img').css({ 
  87.                     'max-width':'280px', 
  88.                     'height':'auto' 
  89.                 }); 
  90.  
  91.                 $('a').each(function(){ 
  92.                     var url = $(this).attr('href'); 
  93.                     var laststr = url.lastIndexOf(".html"); 
  94.                     var lastc = url.charAt(url.length-1); 
  95.                     var startc = url.charAt(0); 
  96.                     if(laststr<0&&lastc!=='/'&&startc!=='?'){ 
  97.                         $(this).attr('href', url + '/'); 
  98.                     } 
  99.                 }); 
  100.  
  101.             }); 
  102.         </script> 
  103. </head> 
  104. <body> 
  105. <cms:editor>    
  106. <div data-role="page"> 
  107.     <div data-role="header"> 
  108.         <a href="/bloghome.html" data-icon="help"><%=new String("\u9996\u9875")%></a> 
  109.         <h1 id="logo"></h1> 
  110.         <a href="/portfolio/" data-icon="info"><%=new String("\u5173\u4e8e")%></a> 
  111.         <div data-role="navbar" data-iconpos="top" data-theme="a"> 
  112.             <nav> 
  113.                 <cms:listmenu style="listview" path="root" items="firstlevel" current="link" currentStyle="current" currentPathStyle="ui-btn-active"/> 
  114.             </nav> 
  115.         </div><!-- /navbar --> 
  116.     </div><!-- /header --> 
  117.  
  118.     <div data-role="content">    
  119.         <cms:moduletitle location="left1" /> 
  120.         <cms:ifmodule location="left1"> 
  121.             <cms:module location="left1" alt="left1" /> 
  122.         </cms:ifmodule> 
  123.         <cms:pagebody /> 
  124.     </div><!-- /content --> 
  125.  
  126.     <div data-role="footer">  
  127.         <h4>&copy; Copywrite by gbin1.com, all rights reserved.</h4>  
  128.     </div>  
  129. </div><!-- /page --> 
  130.  
  131. </cms:editor> 
  132. <!-- google and baidu code  
  133. <script type="text/javascript"> 
  134.   var _gaq_gaq = _gaq || []; 
  135.   _gaq.push(['_setAccount', 'UA-19118450-1']); 
  136.   _gaq.push(['_trackPageview']); 
  137.   (function() { 
  138.     var ga = document.createElement('script'); ga.type = 'text/javascript'ga.async = true
  139.     ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; 
  140.     var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); 
  141.   })(); 
  142. </script> 
  143. <script type="text/javascript"> 
  144. var _bdhmProtocol = (("https:" == document.location.protocol) ? " https://" : " http://"); 
  145. document.write(unescape("%3Cscript src='" + _bdhmProtocol + "hm.baidu.com/h.js%3Fd999331ad5ea0c0930f3aa7c3bda9fc1' type='text/javascript'%3E%3C/script%3E")); 
  146. </script> 
  147. <!-- end of google and baidu code -->    
  148. </body> 
  149. </html> 

搞定!從上面代碼中我們可以看到,使用模板化的網站設計對于添加jQuery mobile移動web網站非常重要,你只需要替換CSS,并且將所有的jQuery Mobile的處理代碼放置到模板中即可,基本無須修改其它結構,即可看到效果。

當然,整個頁面的樣式和風格可能差強人意,不過我們會在以后的文章中,會教大家如何將mobile web應用修改的更好,例如,修改缺省的UI樣式,添加搜索功能等等。

責任編輯:佚名 來源: GBin1.com
相關推薦

2011-07-21 14:57:34

jQuery Mobi

2011-07-19 14:51:54

jQuery Mobi特性

2011-09-02 10:41:51

2012-11-15 10:18:51

IBMdw

2011-09-05 13:45:25

jQuery MobiSencha Touc移動Web UI框架

2011-09-01 10:16:43

JQuery Mobi

2012-10-09 09:28:48

jQuery Mobi餐廳訂餐應用

2011-07-20 14:11:24

響應布局jQuery Mobi

2011-07-21 16:10:11

button按鈕jQuery Mobi

2011-05-26 16:28:08

Android jQuery

2011-09-01 10:21:52

jQuery Mobi元素

2011-09-05 16:43:00

jQuery Mobi

2011-07-19 17:09:44

jQuery Mobi事件

2009-02-17 12:38:21

OperaMobile Linu瀏覽器

2011-07-06 16:26:32

jQuery Mobi

2011-07-19 17:03:31

jQuery Mobi默認配置

2011-07-21 16:10:48

jQuery Mobi工具欄

2011-09-01 14:14:00

jQuery Mobi

2011-09-02 10:59:10

jQuery Mobi

2012-03-06 15:41:16

jQuery MobijQuery Mobi手冊
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 精品av| 羞羞在线观看视频 | 日本中文在线视频 | 韩日三级| 精品一区二区三区免费视频 | 国产乱码一二三区精品 | 羞羞色视频| 成人在线视频一区 | 二区不卡 | 亚洲视频免费在线播放 | 欧美日韩不卡合集视频 | 一级毛片观看 | 中文字幕国产 | 日韩在线精品视频 | 成人国内精品久久久久一区 | 亚洲高清在线免费观看 | 精品免费视频一区二区 | 日本一区二区三区视频在线 | 91色视频在线 | 国产高清免费视频 | 亚洲成av人影片在线观看 | 久草中文在线观看 | 蜜月aⅴ国产精品 | 91精品国产91久久久久久三级 | 涩爱av一区二区三区 | 亚洲精品免费在线 | 亚洲欧美激情国产综合久久久 | 黄色一级视频 | 91国自产 | 成人精品鲁一区一区二区 | 国产乱码精品1区2区3区 | 黄网免费看 | 国产精品日产欧美久久久久 | 亚洲精品免费视频 | 一级一片在线观看 | 精品视频 免费 | 中文字幕在线视频精品 | 国产中文字幕网 | 日韩精品亚洲专区在线观看 | 91天堂网 | 人妖videosex高潮另类 |