前端之移動端開發技巧

前端之移動端開發技巧

4 人贊了文章

目前移動前端開發正在逐漸步入前端技術的主流,其實跟PC端需要掌握的技術是一樣的,不過在PC 端上寫的頁面在多數情況下並不適用於手機端,必須知道這其中的注意點。當然移動端給人的感覺就是H5和CSS3,覺得最欣慰的就是不用再調IE兼容了。下面我總結一下移動端開發技巧和注意事項:

一、移動端常見的布局方式

1. 固定布局

固定布局是第一次做移動端時最好的選擇方式,思路沿用PC端,上手比較快。在<head>標籤里把viewport加好,然後設想整個網頁的寬度為320px即可。其他地方根據PC端來布局。 缺點:大屏手機顯示網頁比較寬,固定布局寬度參照永遠是320px,導致左右兩邊會有空白。

2. 流動布局

流動布局重點就是使用百分比來代替傳統px作為單位(當前容器寬度除以父級容器實際寬度)。例如設計稿寬度為640px,上面有一個導航里包含四個菜單,四周邊距為20px,四個菜單等寬,那麼邊距應該為20px/640px=3.125%,每個菜單的寬度為100%/4=25%。demo里還有邊框,所以記得改變盒子模型,加box-sizing:border-box。 優點:無論網頁寬度如何改變,四個菜單的寬度永遠一樣,並且等寬。

缺點:不夠靈活,如果菜單數量有變化,就滿足不了了。

3.浮動布局

通過使用float屬性,讓列表元素依次排列的布局(通常是左浮動,float:left)

對於浮動局部的局限性,就是每個列表元素的高度必須要一致,例如一個左浮動列表布局,如果第一行有個列表高度高於其他列表,那就在第二行,第一個元素會沿著最高元素的右側對齊,如下圖

但是這種浮動方式對於開發人員來說,這種循環是最簡單的。再加上:nth-child偽類處理邊距,所以,好多人都沒有放棄浮動布局。當然,現在大部分都不需要兼容老版本IE了,浮動的寫法也變得簡單許多。需要清除浮動的話,如下圖

4. Flexbox布局

例如上面第2點說的流動布局用百分比做的寬,局限性就是無法增加刪除菜單,改變菜單數量。如果改為用Flexbox布局,這個問題迎刃而解,不論菜單有多少個,都自動等寬排列成一行。具體想要學習Flexbox布局的,請參考下面的鏈接:w3cplus.com/css3/flexbo

5. 混合布局

混合布局就是把所有學到的知識,靈活運用在布局中。

6. 定位布局

定位在移動端也用得挺多,特別是彈窗。

註:需要各位手機網站前端開發人員需要注意的常見問題: (1)雖然移動端不用寫:hover,但光寫個:active是不夠的。實測Android 2.3下按過的按鈕會留下瀏覽器默認顏色,所以記得給:visited也加個顏色。 (2)遇到寫動畫animation時候,不要用到偽類上。不然Android是沒效果的。 (3)用Flexbox做等分時,記得給寬度。不然Android里如果內容字數不一樣,會撐開。

二、meta標籤在開發webapp時的重要作用

1.此meta標籤是強制讓文檔的寬度與設備的寬度保持1:1,並且文檔最大的寬度比例是1.0,且不允許用戶點擊屏幕放大瀏覽,如下圖

註:width-viewport的寬度 height-viewport的高度 initial-scale:初始縮放比例 minimum-scale:允許用戶縮放到最小比例 maximum-scale:允許用戶縮放到最大比例 user-scalable:用戶是否手動縮放 2.手機上電話號碼默認值顯示,如下圖

若啟用電話功能telephone=yes時,具體調用格式為:如下圖

3. iOS設備對meta定義的私有屬性

(1)此meta標籤是iphone設備中的safari私有meta標籤,它表示:允許全屏模式瀏覽,如下圖

(2)此meta標籤也是iphone的私有標籤,它指定的iphone中safari頂端的狀態條的樣式,如下圖

註:默認值為content=」default」(白色),可以定為content=」black」(黑色)和content=」black-translucent」(灰色半透明)。若值為content=」black-translucent」將會佔據頁面px位置,浮在頁面上方(會覆蓋頁面20px高度–iphone4和itouch4的Retina屏幕為40px)。

4.頁面描述、頁面關鍵詞

5.搜索引擎抓取、不讓百度轉碼

6.UC強制豎屏、UC強制全屏、UC應用模式

7.QQ強制豎屏、QQ強制全屏、QQ應用模式

8.windows phone <a><input>標籤被點擊時產生的半透明灰色背景去掉,點擊無高光

三、樣式技巧處理

(一)文本的處理

1.關閉iOS鍵盤首字母自動大寫

2.單行文本溢出

3. 多行文本溢出

4. iOS中如何禁止用戶選中文字

通過指定文字標籤的-webkit-user-select:none;便可以禁止iOS用戶選中文字

(二)圖片、媒體的處理

1. 使用流體圖片 img{ width:100%; height:auto; width:auto9; }

2. audio元素和video元素在ios和andriod中無法自動播放   應對方案:觸屏即播

3. 如何禁止保存或拷貝圖像 通常當你在手機或者pad上長按圖像 img ,會彈出選項存儲圖像或者 拷貝圖像,如果你不想讓用戶這麼操作,那麼你可以通過以下方法來禁止:

註:該方法只在 iOS 上有效。

(三)字體的處理

  對於網站字體設置 1.移動端項目: font-family:Tahoma,Arial,Roboto,"Droid Sans","Helvetica Neue","Droid Sans Fallback","Heiti SC",sans-self; 2.移動和pc端項目: font-family:Tahoma,Arial,Roboto,"Droid Sans","Helvetica Neue","Droid Sans Fallback","Heiti SC","Hiragino Sans GB",Simsun,sans-self;

3.字體大小盡量使用pt或者em,rem,代替px。

4.設置input裡面placeholder字體的大小

5.解決字體在移動端比例縮小後出現鋸齒的問題: -webkit-font-smoothing: antialiased;

(四)圓角設置

一般按鈕設置圓角會比較美觀,設置圓角的值可以用百分比,也可以用em等單位。 

(五)iOS中如何徹底禁止用戶在新窗口打開頁面

如果需要禁止用戶在新窗口打開頁面,可以使用a標籤target=」_self「來指定用戶在新窗口打開,或target屬性保持空,但iOS的用戶在這個鏈接的上方長按3秒鐘後,iOS會彈出一個列表按鈕,用戶通過這些按鈕仍然可以在新窗口打開頁面,這樣的話,開發者指定的target屬性就失效了,但是可以通過指定當前元素的-webkit-touch-callout:none;來禁止iOS彈出這些按鈕。這個技巧僅適用iOS對於Android則無效。

(六)如何解決盒子邊框溢出

當指定了一個塊級元素時,並為其定義了邊框,設置了其寬度為100%。在移動設備開發過程中通常會對文本框定義為寬度100%,將其定義為塊級元素以實現全屏自適應的樣式,但此時該元素的邊框(左右)各1個像素會溢出了文檔,導致出現橫向滾動條,為解決這一問題,可以添加一個特殊的樣式-webkit-box-sizing:border-box;用來指定該盒子的大小包括邊框的寬度。

(七)移動端取消touch高亮效果   在做移動端頁面時,會發現所有a標籤在觸發點擊時或者所有設置了偽類 :active 的元素,默認都會在激活狀態時,顯示高亮框,如果不想要這個高亮,那麼你可以通過css以下方法來禁止:

最後給大家推薦一些前端學習的網站,感興趣的可以看看:

w3cfuns.com/

xueh5.com/

http://www.w3school.com.cn/

http://www.jq22.com/

http://www.17sucai.com/

容聯技術乾貨推薦>>>

技術乾貨 | PushKit和CallKit實現——基於實時語音通話

技術乾貨 | HTML5之簡單的音視頻應用開發探尋

技術乾貨 | H.264 SVC技術介紹及應用分析

技術乾貨丨ELK日誌系統部署與優化


推薦閱讀:

軟體項目開發,全系列規範及約束文件
四款冷門卻十分好用的軟體,看看哪款你能用得上?
大多數時間你根本不需要那麼強大[隨想]
調試進行不下去,你需要的只是你女兒的一個小玩具
AWS Developer 認證 - Route 53

TAG:移動端 | 軟體開發 | 人工智慧 |