六種布局+rem布局


1、固定布局

固定布局是第一次做移動端的朋友們最好的選擇方式,思路沿用PC端,上手比較快。<head>里把viewport加好,然后設想整個網頁的寬度為320px即可。其他地方PC端怎么布局,這里類似即可。
缺點也顯而易見,大屏手機顯示網頁比較寬,而固定布局寬度參照永遠是320px,導致左右兩邊會有空白。就像你用27寸顯示器看980px寬度網頁一樣。另一個方面就是手機橫屏的時候,兩邊空白更寬。

2、流動布局

以前PC端很少用到這種布局,因為我們需求要么網頁就一種寬度,要么就兩種寬度,分寬窄屏處理。而手機上不同,大部份手機默認寬度都不一樣,所以流動布局可以很好解決自適應需求。
流動布局重點就是使用百分比來代替傳統px作為單位(當前容器寬度除以父級容器實際寬度)。例如設計稿寬度為640px,上面有一個導航里包含四個菜單,四周邊距為20px,四個菜單等寬,那么邊距應該為20px/640px=3.125%,每個菜單的寬度為100%/4=25%。DEMO里還有邊框,所以記得改變盒子模型,加box-sizing:border-box。
優點是無論網頁寬度如何改變,四個菜單的寬度永遠一樣,並且等寬。缺點是不夠靈活,如果菜單數量有變化,就滿足不了了。

3、浮動布局

很多樂觀的人,看到Flexbox最新一版的規范,滿心歡喜的覺得移動端可以不用浮動布局了。但很遺憾,對於Android 2.3支持的Flexbox老規范,連最簡單的多行商品按順序排列,都實現不了。對於這種情況,我喜歡用傳統的浮動方式。因為對於開發人員,這種循環是最簡單的。再加上:nth-child偽類處理邊距,干脆利落。所以,我並沒有放棄浮動布局。當然,因為不需要兼容老版本IE了,浮動的寫法也變得簡單許多。
.clearfix{    content:"";    display:table;    clear:both;}
我在Less的公共代碼庫里,也加了這個:
.clearfix(){    &:after{        content:"";        display:table;        clear:both;    }}需要清除浮動,直接寫.clearfix()即可。floid app工具

4、Flexbox布局

上一篇入門文章已經提到這貨了,不知道你有沒有試過,是不是很神奇?現在我大部份布局都是用Flexbox,包括你以前用浮動的情況,大部份也可以用Flexbox代替。

例如上面流動布局用百分比做的寬,局限性就是無法增加刪除菜單,改變菜單數量。如果改為用Flexbox布局,這個問題迎刃而解,不論菜單有多少個,都自動等寬排列成一行。

再說兩點:

Flexbox有好幾版,所以會導致不兼容的情況,特別是Android 2.3。做了個小工具→Flexbox生成工具←。暫時只做了最簡單的幾種情況,但都兼容iOS 5+、Android 2.3+、Windows Phone 8+,滿足日常需求沒問題。
在Flexbox里,margin很神奇,所以會導致你頻繁用margin:auto;。如果你養成了這個壞習慣,老iOS和老Android里會死得很慘。建議用Flexbox工具里的技術屬性,來處理居中情況。

5、混合布局

把所有學到的知識,靈活運用在布局中,我稱之為混合布局。
例如我上面DEMO里的混合布局示例,設計稿寬度640px,邊距20px,左側大圖寬高390px,右側小圖寬高190px。首先外層容器Flexbox,讓里面左右結構顯示。容器640px去掉左右邊距40px剩600px,左側390px/600px=65%,右側190px/600px=31.66666667%,兩者之間邊距20px/600px=3.33333333%。右側里面小圖片直接寬度100%,高度跟寬度1:1,最后通過Flexbox讓兩個圖一上一下,完成。三張圖片記得用圖片自適應,比例1:1。

6、定位布局

定位在移動端也用得挺多,特別是彈窗。
position: fixed;left: 50%;top: 50%;-webkit-transform:  translate3d(-50%,-50%,0);transform:  translate3d(-50%,-50%,0);
如此簡單就搞定水平垂直居中的彈窗。實際使用中,有少數幾個手機的瀏覽器居然不支持translate3d,實在無語。如果非要兼容這些瀏覽器,推薦使用Flexbox彈窗。擴展一下,移動端建議用硬件加速的屬性,相關鏈接1、鏈接2,而不是直接用margin。(我測試過transition移動一個div,margin會卡頓)

7、Rem布局

手機頁面設計一般的大小是640,但是,手機屏幕大小確實不確定的,這樣,怎么才能做出適應所有手機的手機頁面呢?
一般的解決方案有兩種,rem布局和百分比布局。這兩種方案我有都試過,所以現在更推薦用rem布局來制作手機頁面;

rem布局的兼容性:
Mozilla Firefox 3.6+、Apple Safari 5+、Google Chrome、IE9+和Opera11+、ie6-ie8 還是別用rem
不過現在的手機一般瀏覽器,一般可以直接不用去管IE內核的瀏覽器了。

REM的計算公式
例:html 設置font-size:16px 1rem = 16px 
那么640px = 640/16 =40rem

個人建議設置為100px 方便計算

首先,給頁面的html定義一個100px的
html{ font-size:100px;}/*設定基礎rem*/

且看本人demo

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM