<meta content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0;" name="viewport" />
<meta content="yes" name="apple-mobile-web-app-capable" />
<meta content="black" name="apple-mobile-web-app-status-bar-style" />
<meta content="telephone=no" name="format-detection" />javascript
在開始編寫webapp時,建議前端工程師使用HTML5,而放棄HTML4,由於HTML5能夠實現一些HTML4中沒法實現的豐富的WEB應用程序的體驗,能夠減小開發者不少的工做量,固然了你決定使用HTML5前,必定要對此很是熟悉,要知道HTML5的新標籤的做用。好比定義一塊內容或文章區域可以使用section標籤,定義導航條或選項卡能夠直接使用nav標籤等等。css
在項目開發過程當中能夠會遇到內容排列排列顯示的佈局,假如你碰見這樣的視覺稿,建議你放棄float,能夠直接使用彈性盒子佈局,html
父級display:-webkit-box; 子級:-webkit-box-flex:1;前端
父級對齊box-align:start,center,end;java
-webkit-box-pack:justy(邊對齊),start,end,center;android
box-orient用來肯定子元素的方向web
box-orient:vertical豎着排;chrome
box-orient:inherit橫着排;api
2012年彈性盒語法瀏覽器
父級display:flex;
flex-direction:row排列與頁面的文檔順序相同
flex-direction:row-reverse主軸爲水平方向,排列順序與文檔順序相反
flex-direction:column主軸爲垂直方向,從上到下,
flex-direction:column-reverse主軸爲垂直方向,從下到上。
flex-wrap:聲明超出尺寸大小時採起的行爲
flex-wrap:nowrap,wrap,wrap-reverse
flex-flow:row wrap;
flex:1 1 auto
1,漸變屬性
background:-webkit-gradient(linear,0 0, 0 100%,from(#000),to(#eee));
background:-moz-linear-gradient(top,#333,#444);
請保證將每條數據都放在一個a標籤中,爲什麼這樣作?由於在觸控手機上,爲提高用戶體驗,儘量的保證用戶的可點擊區域較大。
在編寫CSS時,我不建議前端工程師把容器(無論是外層容器仍是內層)的寬度定死。爲達到適配各類手持設備,我建議前端工程師使用自適應佈局模式(支付寶採用了自適應佈局模式),由於這樣作可讓你的頁面在ipad、itouch、ipod、iphone、android、web safarik、chrome都可以正常的顯示,你無需再次考慮設備的分辨率。
看過iOS webapp API的同窗都知道iOS提供了一個meta標籤:用於禁用iOS對頁面中電話號碼的自動識別。在iOS中是不自動識別郵件地址的,但在Android平臺,它會自動檢測郵件地址,當用戶touch到這個郵件地址時,Android會彈出一個框提示用戶發送郵件,若是你不想Android自動識別頁面中的郵件地址,你不妨加上這樣一句meta標籤在head中
你的老闆或者PD或者交互設計師可能會要求你:可否讓咱們的webapp更加像nativeapp,我不想讓用戶看見那個輸入url的控件條?
答案是能夠作到的。咱們能夠利用一句簡單的javascript代碼來實現這個效果
請注意,這句代碼必須放在
裏纔可以正常的工做,並且你的當前文檔的內容高度必須是高於窗口的高度時,這句代碼纔能有效的執行。
我曾經也想禁止用戶旋轉設備,也想實現像某些客戶端那樣:只能在肖像模式或景觀模式下才能正常運行。但如今我能夠很負責任的告訴你:別想了!在移動版的webkit中作不到!
至少Apple webapp API已經說到了:咱們爲了讓用戶在safari中正常的瀏覽網頁,咱們必須保證用戶的設備處於任何一個方位時,safari都可以正常的顯示網頁內容(也就是自適應),因此咱們禁止開發者阻止瀏覽器的
事件,看來蘋果公司的出發點是正確的,蘋果確實不是通常的蘋果。
iOS已經禁止開發者阻止
事件,那Android呢?對不起,我沒有找到任何資料說Android禁止開發者阻止瀏覽器
事件,可是在Android平臺,確實也是阻止不了的。
咱們知道在iOS中,當虛擬鍵盤彈出時,默認狀況下鍵盤是開啓首字母大寫的功能的,根據某些業務場景,可能咱們須要關閉這個功能,移動版本webkit爲input元素提供了
,經過指定
來關閉鍵盤默認首字母大寫。
有時咱們可能須要禁止用戶在新窗口打開頁面,咱們可使用a標籤的
來指定用戶在新窗口打開,或者
屬性保持空,可是你會發現iOS的用戶在這個連接的上方長按3秒鐘後,iOS會彈出一個列表按鈕,用戶經過這些按鈕仍然能夠在新窗口打開頁面,這樣的話,開發者指定的target屬性就失效了,可是能夠經過指定當前元素的
樣式屬性爲none來禁止iOS彈出這些按鈕。這個技巧僅適用iOS對於Android平臺則無效。
咱們在第13條技巧中提到元素的
屬性,一樣爲一個img標籤指定
,這樣用戶就沒法保存\複製你的圖片了。
咱們經過指定文字標籤的
即可以禁止iOS用戶選中文字。
桌面瀏覽器中想要獲取滾動條的值是經過
和
獲得的,但在iOS中你會發現這兩個屬性是未定義的,爲何呢?由於在iOS中沒有滾動條的概念,在Android中經過這兩個屬性能夠正常獲取到滾動條的值,那麼在iOS中咱們該如何獲取滾動條的值呢?
經過window.scrollY和window.scrollX咱們能夠獲得當前窗口的y軸和x軸滾動條的值。
當你指定了一個塊級元素時,而且爲其定義了邊框,設置了其寬度爲100%。在移動設備開發過程當中咱們一般會對文本框定義爲寬度100%,將其定義爲塊級元素以實現全屏自適應的樣式,但此時你會發現,該元素的邊框(左右)各1個像素會溢了文檔,致使出現橫向滾動條,爲解決這一問題,咱們能夠爲其添加一個特殊的樣式
用來指定該盒子的大小包括邊框的寬度。
若是你們夠細心的話,在作wap站點開發時,你們應該會發現android 2.0如下的平臺中問題特別的多,好比說邊框圓角這個問題吧。
在對一個元素定義圓角時,爲徹底兼容android 2.0如下的平臺,咱們必需要按照如下技巧來定義邊框圓角:
這個前綴必需要加上(在iOS中,你能夠不加,但android中必定要加);
那麼
這屬性必需要出如今
屬性後。
而後再依次的覆蓋左下角和右下角,
不然在android 2.0如下的平臺中將所有顯示直角,還有記住!
這個前綴必定要加上!
雖然你的html和css都是徹底自適應的,但有一天若是你發現你的頁面在android中顯示的並非自適應的時候,首先請你確認你的head標籤中是否包含如下meta標籤:
若是有的話,那請你再仔細的看清楚有沒有這個屬性的值
,若是沒有請當即加上吧!
新的iOS系統也就是4.3版本,升級後對safari形成了一個bug:即便你添加了以下的meta標籤,safari仍然會對頁面中的5位連續的數字進行自動識別,而且將其從新渲染樣式,也就是說你的css對該標籤是無效的。
咱們能夠用一個比較齷齪的辦法來解決。好比說支付寶wap站點中顯示金額的標籤,咱們都作了以下改寫: