移動端開發心得(2015.3.1更新)
首先,先說的是我每個專案都會用到的一個模板頁,這個我遇到大大小小的坑之後定義好的一個html檔案
上面的meta可以幫我避免了好都問題
遇到的問題:
1.蘋果手機上面,input控制元件會有預設的樣式
解決
2.在點選a標籤的時候,安卓的手機會有藍色底,蘋果的機子會有灰色底
解決
3.禁止頁面上的文字選中功能
解決
4.左圖,右文字的結構實現
這種結構
(1).第一次做的時候,左右兩塊都是用百分百,這樣在不同的螢幕因為右邊字型的原因會有佈局混亂的情況,然後就用媒體查詢寫多了兩個樣式檔案,不過還有一個就是在平板上面,同樣的百分百,左邊的圖片太大,導致右邊的文字之間的間距要很大才可以對齊,效果很不好
(2).第二次做的時候,就想到了一個方法,利用float脫離文件流的特性,給圖片設定一個maxwidth,然在device-width*圖片百分百=maxwidth時,將文字所在的div的float設定為none;且設定margin-left為圖片的寬度+之間的間距。
(3).第三次做的時候,因為看了其他的一些輕APP在橫屏的時候,圖片大小依然一致,所以把圖片寬度定死,給個max-width和min-width,用彈性佈局 flex-box,這回就很簡單的高度這個佈局問題
5.在微信,UC開啟頁面會有快取問題,導致有時候改動的小效果看不到
解決:這裡試過用cache來不讓其快取,不過用完之後反而令他們不載入檔案(至今還沒成功使用過cache),最後在載入傳送請求的時候檔案後面新增多個隨機數,這樣才解決測試是快取問題
6.在做手機頁面的時候,很多時候會用到z-index這個屬性,如果用到這個屬性的時候再對對應元素設定的話,會比較容易亂。
解決:我設定了
top0{z-index:9999};
top1{z-index:8888};
top2{z-index:7777};
top3{z-index:6666};
top4{z-index:5555};
這樣,在每個頁面中,對應得貼上上面樣式就行了。
7.還有就是多列布局column,彈性佈局flex-box
在不知道這兩種佈局的時候,以下佈局對來來說是比較麻煩的,特別是三列的,並且中間那個還有左右邊框,定義百分百的時候比較麻煩。
在知道多列布局column,彈性佈局flex-box後 上面的問題很好解決,但是要記得column的子元素要給高度,不然有可能會佈局混亂
還有個問題就是設定column-count為3的時候,在7個子元素的時候會是這樣的
豎著排列,不符合正常的一個閱讀習慣,最後還是改成了float來佈局
8.em跟rem的區別
em是相對於父層
rem是相對於根元素
所以說,如果html{font-size:62.5%};的時候,
如果是在parent元素設定1.5em,child設定1.0em就等同於html的1.5em了
在parent元素設定1.5em的情況下,child用rem作為font-size的單位的話,那麼就要設定1.5rem才等同上面的效果
9.backgrond-size,這個屬性很好用
用法有 a.百分百 b.直接給寬高 c.cover d.contain四種用法,按需要選擇使用
10.在iphone中,在手機改為橫屏模式的時候,字型會預設變大
解決:
/*禁止IOS橫屏的時候字型變大*/
-webkit-text-size-adjust: none;
11.在用到<div><img src="" /></div>這個結構的時候,就是用塊級元素包住img的時候,會出現div高度大於img的情況,就是有點高度不知道怎麼來的 解決:img{display:block;};
12.在用到media的時候,如果在<meta>有設定width=device-widht的話,media中在設定max-width min-width,這裡不能用max-device-width 跟 min-device-height,不然會沒效果
13.目前手機web還無法禁用手機橫屏的情況下,如果你頁面佈局有問題的話,在橫屏的時候會出現佈局亂的情況
解決
在橫屏的時候彈出個層把他改正
例如
14.在彈出整屏div的時候,如果頁面整體大於一螢幕,這時候還會出現頁面可以滾動的情況頁面旁邊是出現滾動條的,而且是可以拖動的
解決:在body設定高度100%,且overflow-hidden;在彈出消失的時候才去掉overflow-hidden;
15.在做一個手機web專案的時候,要先總結下頁面所以的字型大小,然後定義好幾種常用font-size,防止後期混亂
16.在看設計稿的時候,要注意比例的縮放,因為UI做的時候用的尺寸是用640*1136(至少我這邊是這樣),然後再做手機web的時候,我們再mate那裡content設定width=device-width,所以要根據實際的頁面效果來定義頁面常用的font-size大小以及其他。不能按UI給出的字型大小來設定font-size。
17.在class反面,少用繼承,多用組合,這樣可以加快開發效率,可以自己定義一個底層樣式base.css(常用樣式且所以專案都可以共用)
18.可能做手機web的都去學校手機web開發框架,例如我就是學了jquery mobile,這個框架很強大,但是不的不說,就是在UI樣式方面比較麻煩,要不斷的去覆蓋樣式,如果你的web是UI是有自己特色的話,這個時候用jquery mobile就比較費時間(至少我是這樣)。所以說在開發的時候,覺得哪個方法快就用哪個,不要為了用框架而且用框架。
************************************************************分割線 ************************************************************************************以下規範建議,均是Alloyteam
在日常開發過程中總結提煉出的經驗,規範具備較好的專案實踐,強烈推薦使用
字型設定
使用無襯線字型
body {
font-family: "Helvetica Neue", Helvetica, STHeiTi, sans-serif;
}
iOS 4.0+ 使用英文字型 Helvetica Neue,之前的iOS版本降級使用 Helvetica。中文字型設定為華文黑體STHeiTi。 需補充說明,華文黑體並不存在iOS的字型庫中(http://support.apple.com/kb/HT5878), 但系統會自動將華文黑體 STHeiTi 相容命中系統預設中文字型黑體-簡或黑體-繁
Heiti SC Light 黑體-簡 細體 (iOS 7後廢棄) Heiti SC Medium 黑體-簡 中黑 Heiti TC Light 黑體-繁 細體 Heiti TC Medium 黑體-繁 中黑
原生Android下中文字型與英文字型都選擇預設的無襯線字型
4.0 之前版本英文字型原生 Android 使用的是 Droid Sans,中文字型原生 Android 會命中 Droid Sans Fallback 4.0 之後中英文字型都會使用原生 Android 新的 Roboto 字型 其他第三方 Android 系統也一致選擇預設的無襯線字型
基礎互動
設定全域性的CSS樣式,避免圖中的長按彈出選單與選中文字的行為
a, img {
-webkit-touch-callout: none; /* 禁止長按連結與圖片彈出選單 */
}
html, body {
-webkit-user-select: none; /* 禁止選中文字(如無文字選中需求,此為必選項) */
user-select: none;
}
移動效能
要考慮Android
低端機與2G
網路場景下效能 注意!
釋出前必要檢查項
- 所有圖片必須有進行過壓縮
- 考慮適度的有失真壓縮,如轉化為80%質量的jpg圖片
- 考慮把大圖切成多張小圖,常見在banner圖過大的場景
載入效能優化, 達到開啟足夠快
- 資料離線化,考慮將資料快取在 localStorage
- 初始請求資源數
< 4
注意! - 圖片使用CSS Sprites 或 DataURI
- 外鏈 CSS 中避免 @import 引入
- 考慮內嵌小型的靜態資源內容
- 初始請求資源gzip後總體積
< 50kb
- 靜態資源(HTML/CSS/JS/Image)是否優化壓縮?
- 避免打包大型類庫
- 確保接入層已開啟Gzip壓縮(考慮提升Gzip級別,使用CPU開銷換取載入時間) 注意!
- 儘量使用CSS3代替圖片
- 初始首屏之外的靜態資源(JS/CSS)延遲載入 注意!
- 初始首屏之外的圖片資源按需載入(判斷可視區域) 注意!
- 單頁面應用(SPA)考慮延遲載入非首屏業務模組
- 開啟Keep-Alive鏈路複用
執行效能優化, 達到操作足夠流暢
- 避免 iOS 300+ms 點選延時問題 注意!
- 快取 DOM 選擇與計算
- 避免觸發頁面重繪的操作
- Debounce連續觸發的事件(scroll / resize / touchmove等),避免高頻繁觸發執行 注意!
- 儘可能使用事件代理,避免批量繫結事件
- 使用CSS3動畫代替JS動畫
- 避免在低端機上使用大量CSS3漸變陰影效果,可考慮降級效果來提升流暢度
- HTML結構層級保持足夠簡單
- 盡能少的使用CSS高階選擇器與通配選擇器
- Keep it simple
線上效能檢測評定工具使用指南
- 訪問 Google PageSpeed 線上評定網站
- 在位址列輸入目標URL地址,點選分析按鈕開始檢測
- 按 PageSpeed 分析出的建議進行優化,優先解決紅色類別的問題
推薦閱讀
相關文章
- 【移動端開發】移動端開發基礎問題
- 移動端開發技巧
- 移動端開發小結
- 移動端SDK介面設計心得體會
- 移動端App開發 - 01 - 開篇APP
- H5移動端開發H5
- 前端開發移動端除錯前端除錯
- 移動端開發新趨勢FlutterFlutter
- 移動端識別SDK開發包
- 移動端開發基礎瞭解
- 移動端Modal元件開發雜談元件
- 移動端開發小結(實戰)
- Vue.js開發移動端APPVue.jsAPP
- 移動端快速開發的祕密武器
- 移動端前端開發技術概況前端
- Lesktop開源IM移動端:接入LayIM移動端UIUI
- 手摸手帶你學移動端WEB開發Web
- 移動端跨平臺開發的深度解析
- 移動端開發reset.css(可用normalize替代)CSSORM
- Bytom移動端錢包SDK開發基礎
- 移動端網頁版開發遇到的問題網頁
- 移動端網站開發要點-meta設定網站
- 基於 vagrant搭建移動端的開發環境開發環境
- 移動端開發工程師的AI突圍之路工程師AI
- 淺談 2018 移動端跨平臺開發方案
- 移動端小白,30天掌握Flutter雙端外掛開發-上Flutter
- React Native 0.76:重大更新引領移動開發新潮流React Native移動開發
- 跨平臺移動應用開發引擎CrossApp更新至0.1.8ROSAPP
- 移動端動態更新的原理和模式,你瞭解多少?模式
- 做移動端開發時,你是如何除錯的?除錯
- [譯] 使用 Flutter 實現跨平臺移動端開發Flutter
- 兩年移動端前端開發問題吐血彙總前端
- 移動端HTML5頁面開發備忘錄HTML
- 移動端小白,30天掌握Flutter雙端外掛開發-下(iOS篇)FlutteriOS
- 移動端小白,30天掌握Flutter雙端外掛開發-中(Android篇)FlutterAndroid
- YonBuilder移動開發-移動原生外掛開發環境配置教程UI移動開發開發環境
- react開發移動端H5遇到的問題(1)ReactH5
- 移動端除錯痛點?——送你五款前端開發利器除錯前端
- 移動端 web 開發的設計稿與工作流Web