移動端推廣速度快,效果好,愈來愈多的企業,商家開始重視移動站的建設和移動頁面(h5)的製做。隨着移動頁面的玩法愈來愈多,對前端技術的要求也會愈來愈高。
選擇合適的佈局,是寫好移動頁面的第一步。今天咱們就來談談移動端的佈局問題。css
爲何移動端佈局如此混亂?這是由多方的緣由形成的。
1.css這套技術系統自己十分混亂,基本上能夠說毫無規律可言,依賴於技術人員的熟練程度而不是邏輯更多一些;
2.css歷經了多個時代的升級,每一次升級以後,新的技術標準和舊的基本上沒有任何關聯。好比:table佈局,div+css佈局,flex佈局,grid佈局等;
3.手機終端市場的混亂。當前市場上手機的尺寸五花八門;加上由iphone的retina技術帶來的dpr的混亂;html
關於移動設備一些基本概念的理解。
一.物理設備像素。
思考:爲何手電筒只能發出一種顏色的光,而咱們的屏幕能發出這麼多種顏色的光?
由於咱們的屏幕是由無數個小的手電筒組成的,每一個點能夠發不一樣顏色的光,最後就組成了咱們看到的彩色的效果。
每張圖片都是由色點組成的,每一個色點稱爲一個像素。一張圖片由30萬個色點組成,這個圖片的像素就是30W。咱們常說相機是多少像素,這個像素實際就是在說這款照相機的感器件有多少個,有100W個感光器件的相機就是100W像素的相機,有4000W個感光器件的相機就是4000W像素,以此類推。一臺100W像素的相機拍攝的照片洗成5寸的照片會比洗成6寸清晰一點。前端
二.屏幕分辨率
屏幕分辨率是屏幕每行的像素點數*每列的像素點數,每一個屏幕有本身的分辨率。屏幕分辨率越高,所呈現的色彩越多,清晰度越高。
結論: git
三.css像素
在pc端1css像素至關於1物理設備像素。
思考:
咱們的手機分辨率是640*1136(iphone 5和iphone 5s的物理設備分辨率),若是咱們打開一個純粹pc端的網站會出現什麼狀況?
(好比jumei.com,min-width是1090px,在pc端的個人電腦的設備寬度是1280,經過screen.width進行檢測)
咱們會發現網站會縮小到咱們能夠看到整個網站(www.jubi.com)
則會發現,有滾動條了,由於禁止縮放了github
四. dpr
1個css像素佔多少物理設備像素
思考:iphone 5或者iphone 5s一屏幕能看到的極限是多少寬度?
應該是320(這是默認的可視區的css寬度) * 2 = 640pxmarkdown
以上,咱們學習完了全部關於移動端佈局相關的概念,接下來,咱們來聊一聊佈局的思路。iphone
假如咱們有640px的設計稿,咱們如何才能讓用戶所有看到呢?
思路一:百分比佈局
把尺寸除以2,好比咱們量出來的是640px ---> 實際上咱們只寫320px;
若是是iphone 6怎麼辦? iphone 6的寬度是375px;
因爲320和375的寬度其實差異不大,咱們能夠不定寬度,也就是把總體寬度設定爲100%,而後其餘的所有量出來是多少。
佈局方法ide
百分比佈局的缺點
在大屏幕的手機下顯示效果會變成有些頁面元素寬度被拉的很長,可是高度仍是和原來同樣,實際顯示很是的不協調,這就是流式佈局的最致命的缺點,每每只有幾個尺寸的手機下看到的效果是使人滿意的,其實不少視覺設計師應該沒法接受這種效果,由於他們的設計圖在大屏幕手機下看到的效果至關因而被橫向拉長來同樣。流式佈局並非最理想的實現方式,經過大量的百分比佈局,會常常出現許多兼容性的問題,還有就是對設計有不少的限制,由於他們在設計之初就須要考慮流式佈局對元素形成的影響,只能設計橫向拉伸的元素佈局,設計的時候存在不少侷限性。工具
思路二:rem佈局
如何理解rem佈局?
思考一個問題,假如咱們的設計稿是750px,咱們量出來一個盒子的寬度是75px,那麼在640px下面,它應該是多少合適呢? 答案是:64
問題,若是才能保證你寫的css的尺寸只須要寫一次,在不一樣的屏幕尺寸下面不用改?
假如咱們在750px下面,咱們讓html的font-size爲75,則這個盒子的寬度是1rem,在640px下面咱們讓html的font-size爲64,則這個盒子的寬度也是1rem,問題就這樣解決了。佈局
那麼實際開發中,該用什麼樣等佈局思路?
咱們打開m.jd.com,m.vip.com,會發現,實際上沒有一個網站用了純粹的百分比或者rem佈局,常常會發現各類佈局思路混在一塊兒,由於沒有一套佈局思路可以通用保證不出問題
爲何rem不是萬能的?
好比1px,若是咱們在dpr是2的狀況下就會變得很粗,咱們知道那並非真正的1像素。
推薦佈局思路——使用由阿里出品的lib-flexible庫。
網址:https://github.com/amfe/lib-flexible;
該如何使用呢?
以上是我我的關於移動端佈局的一些總結。若有不妥的地方,還請指正。
最後附上關於移動端常見問題當網址: