1.頁面的適用性問題。對於移動終端,有不一樣的分辨率與屏幕尺寸,如果還像電腦端的設計還限制網頁的寬度為1003px或其他像素值,字體大小還用12px或14px,那么,不一樣的終端的效果差別會很大。所以這里,最好讓網頁的寬度自適應屏幕,還好,w3c在設計html的時候為我們考慮了這一點,只需一句話,就可以搞定,就是加上
- <meta name="viewport" content="width=device-width"/>
,對於字體的話,我們就用em或ex為單位就好
2.版本制作問題。移動頁面往往針對不同的手機設置不同的版本,一般有精簡版,標准版,3G版,觸屏版,智能手機版等等,這些除了在頁面設計上有不同外,頁面語言也會不同的。精簡版采用wap 1.0 的wml腳本編寫,這個通用性以前很強,很多國產手機都支持這個語言的,但這個語言是很精簡的。標准版的一般可以采用wap 2.0技術,對應的腳本語言是xhtml mp(xhtml mobile profile),這個語言是xhtml的子集,這個並且支持大部分的css,基本上和電腦版的差不多,但一般不能用js,這是考慮到這些手機是不支持js的。對於智能手機版,由於現在的智能手機都支持js,這個版本的制作上就簡單多了,不過,又由於大部分智能手機(基本上除去塞班手機,包括Android,ios,wp7等)都支持Html5,因此,智能手版可以采用html5來制作。
3.版本控制問題。可能這部分是比較不好解決的,怎么智能判斷手機的最佳版本並跳轉,可以從這幾個方面考慮。一方面,可以想辦法得到手機的操作系統,比如,Android的,ios的,就可以跳轉到html5版了,windows系統,毫無疑問電腦版,獲得手機系統,可能通過得到手機型號,現在的方法是通過瀏覽器的UA(user agent),獲得手機的一些信息,簡單一點的,直接可以通過UA判斷手機的制造產商。要想獲得更多的信息,就得有一個數據庫,因為不同手機型號會有不一樣的UA信息,世界上的手機有很多,自己要想做一個這樣的數據庫還是很難的,不過,已經有人為我們做好了這樣的數據庫,或者更方便的,做好了一個識別手機適用最佳版本的函數庫,這里我推薦用Wurfl。另一方面,可以通過頁面的腳本來判斷瀏覽器對js和html5的支持,代碼如下
- <?xml version="1.0" encoding="UTF-8"?>
- <!DOCTYPE html PUBLIC "-//WAPFORUM//DTD XHTML Mobile 1.0//EN" "http://www.wapforum.org/DTD/xhtml-mobile10.dtd">
- <html xmlns="http://www.w3.org/1999/xhtml">
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <meta name="viewport" content="width=device-width"/>
- <title>版本控制</title>
- <script type="text/javascript">
- window.onload = function(){
- //檢測是否支持js
- try{//檢測是否支持html5
- document.getElementById("c").getContext("2d");
- document.location = '支持html5版的鏈接';
- }catch(e){//否則跳到支持js版
- document.location = '支持js版';
- }
- };
- </script>
- </head>
- <body>
- <canvas id='c'></canvas>
- 普通版
- </body>
- </html>
如果你僅僅想開發一個版本,只是判斷一下是不是移動客戶端,這里引用一段discuz! x2的代碼
- <?php
- function checkmobile() {
- global $_G;
- $mobile = array();
- static $mobilebrowser_list =array('iphone', 'android', 'phone', 'mobile', 'wap', 'netfront', 'java', 'opera mobi', 'opera mini',
- 'ucweb', 'windows ce', 'symbian', 'series', 'webos', 'sony', 'blackberry', 'dopod', 'nokia', 'samsung',
- 'palmsource', 'xda', 'pieplus', 'meizu', 'midp', 'cldc', 'motorola', 'foma', 'docomo', 'up.browser',
- 'up.link', 'blazer', 'helio', 'hosin', 'huawei', 'novarra', 'coolpad', 'webos', 'techfaith', 'palmsource',
- 'alcatel', 'amoi', 'ktouch', 'nexian', 'ericsson', 'philips', 'sagem', 'wellcom', 'bunjalloo', 'maui', 'smartphone',
- 'iemobile', 'spice', 'bird', 'zte-', 'longcos', 'pantech', 'gionee', 'portalmmm', 'jig browser', 'hiptop',
- 'benq', 'haier', '^lct', '320x320', '240x320', '176x220');
- $useragent = strtolower($_SERVER['HTTP_USER_AGENT']);
- if(($v = dstrpos($useragent, $mobilebrowser_list, true))) {
- $_G['mobile'] = $v;
- return true;
- }
- $brower = array('mozilla', 'chrome', 'safari', 'opera', 'm3gate', 'winwap', 'openwave', 'myop');
- if(dstrpos($useragent, $brower)) return false;
- $_G['mobile'] = 'unknown';
- if($_GET['mobile'] === 'yes') {
- return true;
- } else {
- return false;
- }
- }
- function dstrpos($string, &$arr, $returnvalue = false) {
- if(emptyempty($string)) return false;
- foreach((array)$arr as $v) {
- if(strpos($string, $v) !== false) {
- $return = $returnvalue ? $v : true;
- return $return;
- }
- }
- return false;
- }
- var_dump(checkmobile());//如果是移動端返回true,否則false
4.手機版本的大小問題。一般來說,對於精簡版和普通版的手機網頁,我們是做得越精簡越好,能省的代碼最好省去,畢竟現在手機流量對用戶來說還是很寶貴的。比如元素命名,一般頁面少的話,命名越短越好,css最好寫在一行。css中,有些元素是繼承父類的樣式的,不用重復定義,善用默認值。
5.瀏覽器緩存。如果再更新不快的情況下,最好開啟瀏覽器緩存