移動web在當(dāng)今的進展速度是一日千里,作為移動領(lǐng)域的門外漢,在這段時間的接觸后,發(fā)現(xiàn)前端開發(fā)這一塊做一個小小的總結(jié)。
1.四大掃瞄 器內(nèi)核
1.Trident (IE掃瞄 器) :因為在早期IE占有大量的市場份額,所以以前有很多網(wǎng)頁是根據(jù)這個Trident的標(biāo)準來編寫的,但是實際上這個內(nèi)核對真正的網(wǎng)頁標(biāo)準支持不是很好,同時存在許多安全Bug。
2.Gecko:( FireFox )優(yōu)點就是功能強大、豐富,可以支持很多復(fù)雜網(wǎng)頁效果和掃瞄 器擴展接口,缺點是消耗很多的資源,比如內(nèi)存。
3.Webkit: ( Chrome/ Safari / UC )優(yōu)點就是Webkit擁有清楚 的源碼結(jié)構(gòu)、極快的渲染速度,缺點是對網(wǎng)頁代碼的兼容性較低,會使一些編寫不標(biāo)準的網(wǎng)頁無法正確顯示。
4.Presto: ( 歐朋 ) Presto內(nèi)核被稱為公認的掃瞄 網(wǎng)頁速度最快的內(nèi)核,同時也是處理JS腳本最兼容的內(nèi)核,能在Windows、Mac及Linux操作系統(tǒng)下完美運行。
移動端開發(fā)主要對象是手持設(shè)備,其中絕大部分是IOS和Android系統(tǒng),基于Webkit內(nèi)核,可使用Chrome掃瞄 器調(diào)試即可。
2.手機掃瞄 器
掃瞄 器已經(jīng)逐漸從傳統(tǒng)桌面轉(zhuǎn)向手機端,競爭也越來越激烈。目前國內(nèi)市場主流的手機掃瞄 器:UC、百度、歐朋、QQ、海豚、safari、Chrome,這些掃瞄 器都是基于webkit內(nèi)核的,兼容性方面不存在問題,同時對html5和css3的支持很好,所以,大膽地應(yīng)用html5和css3技術(shù)吧。
在開始編寫webapp時,前端工程師使用HTML5,而放棄HTML4,因為HTML5可以實現(xiàn)一些HTML4中無法實現(xiàn)的豐富的WEB應(yīng)用程序 的體驗,可以減少開發(fā)者很多的工作量,當(dāng)然了你決定使用HTML5前,一定要對此非常熟悉,要知道HTML5的新標(biāo)簽的作用。比如定義一塊內(nèi)容或文章區(qū)域 可使用section標(biāo)簽,定義導(dǎo)航條或選項卡可以直接使用nav標(biāo)簽等等。
3.終端分辨率
手機分辨率比PC分辨率要龐雜得多,各種分辨率有木有?大小差距那么大有木有?這在一定程度上給頁面制作帶來了不小的麻煩。所以針對這樣的因素,必須有充分的考慮??紤]到掃瞄 器自適應(yīng),需要設(shè)計和制作完成各種不同的方法。
1) 市場上主流手機生產(chǎn)商的產(chǎn)品分辨率。經(jīng)過調(diào)研發(fā)現(xiàn),目前主流的手機分辨率為:480*800像素、320*480像素,而1280*720像素(720P)會是接下來的趨勢。這些都是很粗略的統(tǒng)計,要有精確的數(shù)據(jù)需要花費不少的精力,那是數(shù)據(jù)分析人員的工作。
2) 項目目標(biāo)群所持設(shè)備的分辨率。項目目標(biāo)群即用戶,用戶擁有什么樣的手機分辨率,從一定程度上來說比第一點來得更加重要,它決定著項目開發(fā)的方向。
4.響應(yīng)式web開發(fā)
在編寫CSS時,我不建議前端工程師把容器(不管是外層容器還是內(nèi)層)的寬度定死。為達到適配各種手持設(shè)備,我建議前端工程師使用自適應(yīng)布局模式(支付 寶 采納了自適應(yīng)布局模式),因為這樣做可以讓你的頁面在ipad、itouch、ipod、iphone、android、web safarik、chrome都能夠正常的顯示,你無需再次考慮設(shè)備的分辨率。
響應(yīng)式web開發(fā)不是一項開創(chuàng)性的技術(shù)變革,簡單地說,響應(yīng)式web設(shè)計采納了媒體查詢、流式布局、液態(tài)圖片三項技術(shù),把它們組合在一起來制作頁面,使得頁面不只在傳統(tǒng)桌面,在平板電腦和手機上,各種不同的分辨率都能夠完美顯示。而要做到這點,我覺得不難,請繼續(xù)往下:
1) 準備工作:
a) 插件安裝:window resize。您可以通過以下鏈接 https://chrome.google.com/webstore/search-extensions/window%20resize下載安裝谷歌掃瞄 器插件,安裝成功后,當(dāng)您調(diào)整掃瞄 器窗口時,在掃瞄 器右下角會有灰度提示當(dāng)前窗口和類似于手機視口的大小提示。截圖如下:
b) 編輯器安裝:subline Text2(支持html5,安裝css3擴展失敗)、topStyle5(支持css3)。
c) 弄清視口和屏幕的區(qū)別。視口是掃瞄器的內(nèi)容顯示區(qū)域,屏幕是設(shè)備的物理顯示區(qū)域。比如視口寬度我們一般用width表示,而屏幕寬度是用device-width來表示。相信做過手機頁面的童鞋都經(jīng)常見過這段代碼:
<meta name="viewport" content="width=device-width,initial-scale=1.0">
其中width=device-width就是說把頁面寬度設(shè)置成和屏幕寬度一樣。
d) 響應(yīng)式設(shè)計創(chuàng)意網(wǎng)站收集:http://www.561.cn。這里有很多響應(yīng)式Web設(shè)計的網(wǎng)站,供您參考和學(xué)習(xí)。
2) 征途ING:
e) 響應(yīng)式web設(shè)計之媒體查詢:
為了減少http請求,我想在css樣式表里進行媒體查詢會是個不錯的選擇,而不是在頁面head部分使用link進行加載。樣式表里的媒體查詢格式為:
@media screen and (max-width:960px){}
大括號內(nèi)部書寫樣式。該語句相當(dāng)于推斷 語句,有兩個條件,一個是視口寬度最大不超過960px,screen代表顯示屏,這兩個條件都具備了,就調(diào)用大括號內(nèi)的樣式。
f) 響應(yīng)式web設(shè)計之流式布局:
流式布局以百分比進行布局。最重要是時刻關(guān)注元素的父級層,所有的元素都是以父級層為基準。流式布局的應(yīng)用是為了和媒體查詢完美地結(jié)合,形成平滑的布局變 化跳轉(zhuǎn)效果。一般而言,media里的樣式多以width、padding、margin、font-size、line-height這些為主。
g) 響應(yīng)式web設(shè)計之液態(tài)圖片:
要實現(xiàn)液態(tài)圖片,只需加入如下代碼:img{max-width:100%;}
web移動頭部書寫1
ontent-Type" content="text/html; charset=utf-8" /> -precomposed" sizes="48×48" href="/images/48×48.png" />
1、首先我們來看看webkit內(nèi)核中的一些私有的meta標(biāo)簽,這些meta標(biāo)簽在開發(fā)webapp時起到非常重要的作用
<meta content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0;" name="viewport" />
這個meta標(biāo)簽表示:強制讓文檔的寬度與設(shè)備的寬度保持1:1,并且文檔最大的寬度比例是1.0,且不同意用戶點擊屏幕放大掃瞄 ;
<meta content="yes” name=" apple-mobile-web-app-capable" />
meta標(biāo)簽是iphone設(shè)備中的safari私有meta標(biāo)簽,它表示:同意全屏模式掃瞄 ;
<meta content="black" name=" apple-mobile-web-app-status-bar-style" />
meta標(biāo)簽也是iphone的私有標(biāo)簽,它指定的iphone中safari頂端的狀態(tài)條的樣式;
<meta content="telephone=no" name="format-detection" />
meta標(biāo)簽表示:告訴設(shè)備忽略將頁面中的數(shù)字識別為電話號碼
其他注意問題
1.在項目開發(fā)過程中可以會遇到內(nèi)容排列排列顯示的布局,建議你放棄float,可以直接使用display:block;
2.請保證將每條數(shù)據(jù)都放在一個a標(biāo)簽中,為何這樣做?因為在觸控手機上,為提升用戶體驗,盡可能的保證用戶的可點擊區(qū)域較大。
3.學(xué)會使用webkit-box。
我們說過自適應(yīng)布局模式,有些同學(xué)可能會問:如何在移動設(shè)備上做到完全自適應(yīng)呢?很感謝webkit為display屬性提供了一個 "webkit-box" 的值,它可以幫助前端工程師做到盒子模型靈活操縱 。
4、如何去除Android平臺中對郵箱地址的識別 看過iOS webapp API的同學(xué)都知道iOS提供了一個meta標(biāo)簽:用于禁用iOS對頁面中電話號碼的自動識別。在iOS中是不自動識別郵件地址的,但在Android平 臺,它會自動檢測郵件地址,當(dāng)用戶touch到這個郵件地址時,Android會彈出一個框提示用戶發(fā)送郵件,如果你不想Android自動識別頁面中的 郵件地址,你不妨加上這樣一句meta標(biāo)簽在head中
<meta content="email=no" name="format-detection" />
5、如何去除iOS和Android中的輸入URL的控件條 你的老板或者PD或者交互設(shè)計師可能會要求你:能否讓我們的webapp更加像nativeapp,我不想讓用戶看見那個輸入url的控件條?答案是可以做到的。我們可以利用一句簡單的javascript代碼來實現(xiàn)這個效果
setTimeout(scrollTo,0,0,0);
請注意,這句代碼必須放在window.onload里才能夠正常的工作,而且你的當(dāng)前文檔的內(nèi)容高度必須是高于窗口的高度時,這句代碼才能有效的執(zhí)行。
我曾經(jīng)也想禁止用戶旋轉(zhuǎn)設(shè)備,也想實現(xiàn)像某些客戶端那樣:只能在肖像模式或景觀模式下才能正常運行。但現(xiàn)在我可以很負責(zé)任的告訴你:別想了!在移動版的webkit中做不到!至少Apple webapp API已經(jīng)說到了:我們?yōu)榱俗層脩粼趕afari中正常的掃瞄 網(wǎng)頁,我們必須保證用戶的設(shè)備處于任何一個方位時,safari都能夠正常的顯示網(wǎng)頁內(nèi)容 (也就是自適應(yīng)),所以我們禁止開發(fā)者阻止掃瞄 器的orientationchange事件,看來蘋果公司的出發(fā)點是正確的,蘋果確實不是一般的蘋果。iOS已經(jīng)禁止開發(fā)者阻止orientationchange事件,那Android呢?對不起,我沒有找到任何資料說Android禁止開發(fā)者阻止掃瞄 器orientationchange事件,但是在Android平臺,確實也是阻止不了的。
7、如何檢測用戶是通過主屏啟動你的webapp
看過Apple webapp API的同學(xué)都知道iOS為safari提供了一個將當(dāng)前頁面添加主屏的功能,按下iphone\ipod\ipod touch底部工具中的小加號,或者ipad頂部左側(cè)的小加號,就可以將當(dāng)前的頁面添加到設(shè)備的主屏,在設(shè)備的主屏?xí)詣釉黾右粋€當(dāng)前頁面的啟動圖標(biāo),點 擊該啟動圖標(biāo)就可以快速、便捷的啟動你的webapp。從主屏啟動的webapp和掃瞄 器訪問你的webapp最大的區(qū)別是它清除了掃瞄 器上方和下方的工具條,這樣你的webapp就更加像是nativeapp了,還有一個區(qū)別是window對像中的navigator子對象的一個standalone屬性。iOS中掃瞄 器直 接訪問站點時,navigator.standalone為false,從主屏啟動webapp時,navigator.standalone為true, 我們可以通過navigator.standalone這個屬性獲知用戶當(dāng)前是否是從主屏訪問我們的webapp的。在Android中從來沒有添加到主 屏這回事!
6、如何關(guān)閉iOS中鍵盤自動大寫 我們知道在iOS中,當(dāng)虛擬鍵盤彈出時,默認情況下鍵盤是開啟首字母大寫的功能的,根據(jù)某些業(yè)務(wù)場景,可能我們需要關(guān)閉這個功能,移動版本webkit為input元素提供了autocapitalize屬性,通過指定autocapitalize="off"來關(guān)閉鍵盤默認首字母大寫。
********************分割線*************************
緩存操縱
<meta http-equiv="Cache-Control" content="no-cache"/>
<meta http-equiv="Cache-Control" content="max-age=300"/>
下面這行:
<meta http-equiv="Cache-Control" content="max-age=0"/>
與下面一行有相同的效果:
<meta http-equiv="Cache-Control" content="no-cache"/>
某些 WAP 掃瞄 器不支持用 <meta/> 標(biāo)簽來操縱 緩存, 但它們確實知道 HTTP 頭 "Cache-Control: no-cache" 的意思. 這種情況下, 解決方案是在服務(wù)器端的 HTTP 響應(yīng)中設(shè)置 HTTP 頭.
HTTP刷新
<meta http-equiv="Cache-Control" content="no-cache"/>
<meta http-equiv="refresh" content="15"/>
注意的是這個 XHTML MP 例子中需要 <meta http-equiv="Cache-Control" content="no-cache"/>. 如果上述代碼沒被包含, WAP 掃瞄 器將僅僅顯示緩存中的文檔的復(fù)本, 而不需要每次刷新都連接服務(wù)器.
<meta http-equiv="refresh" content="15;URL=hello_world_example1.xhtml"/>
某些 WAP 掃瞄 器是不支持 HTTP 刷新的. 例如, HTTP 刷新在 Openwave 移動掃瞄 器 6.2.2 版上運行良好, 但在 Nokia 移動掃瞄 器 4.0 版, Sony Ericsson T610 和 T68i 移動電話模擬器上是不起作用的.
注釋
<meta name="author" content="mark"/>
clearType字體
<META HTTP-EQIV="cleartype" CONTENT="ON|OFF">
定義頁面尺寸
IE的使用:<META NAME="MobileOptimized" CONTENT="240">
google搜索中知道這個可以解決flash不能全屏的問題,自己沒遇到過。
其他使用:<meta id="viewport" name="viewport" content="width=320; initial-scale=1.0; maximum-scale=1.0; user-scalable=0;" />