百分比(流式佈局)
百分比是CSS樣式中很重要的一個單位,而在頁面佈局的層面上,在不少地方對百分比進行了應用。因爲用戶使用習慣是從上到下瀏覽,通常性質的百分比佈局一般是寬度自適應,高度不設置,默認爲auto。css
節點對象寬高百分比html
目前恰當使用場景:需寬(或者:寬+高)全屏的地方。例如,背景平鋪/純色、蒙層、導航條寬度,其餘全屏;web
rem+mediaquery/js
rem是CSS3新增的相對長度單位。做爲相對長度單位,它只跟隨HTML根元素的字體大小變化,不受任何非HTML根元素的父元素大小影響。這使得它集相對長度單位和絕對長度單位優勢於一身。想改變使用rem的元素或者文字節點的大小,只需改變HTML根元素的文字大小便可。瀏覽器
p {font-size:14px; font-size:.875rem;}
未完
媒體查詢app
viewport+px+……框架
A. 移動頁面尺寸縮放與適配的技術ide
技術名稱 | 描 述 | 依賴尺寸單位 | 依賴基數 | 須要配合屏幕尺寸捕捉 | 適應設備獨立像素 | 不受父元素大小影響 | 瀏覽器等比縮放(用於塊元素) | 還原設計圖 | 用於字體 |
---|---|---|---|---|---|---|---|---|---|
流式佈局 | 根據父元素百分比 | % | 父元素尺寸 | 不須要(侷限) | 不支持 | 不支持 | 不支持長寬比例不變 | 差 | 不溫馨 |
vw/vh | 根據屏幕百分比 | vw/vh | 屏幕寬度 | 不須要 | 不支持 | 支持 | 支持,無需計算 | 須要換算 | 不溫馨 |
rem | 根據根字體大小 | rem | 根字體大小(px/vw/em) | 須要 | 不支持 | 支持 | 支持,須要計算 | 須要換算 | 不溫馨 |
px | 定死大小 | px | devicePixelRatio | 須要 | 不支持 | 支持 | 不支持 | 直接使用 | 溫馨 |
em | 根據父元素字體大小 | em | 父元素字體大小(px/vw/em) | 須要 | 不支持 | 不支持 | 不支持 | 須要換算 | 不溫馨 |
B. 移動屏幕尺寸捕捉與響應式佈局的技術函數
技術名稱 | 描述 | 可調整尺寸範圍 | 是否可調整局部 | 尺寸捕捉方法 | 設備獨立像素 | 適配全部尺寸設備 | 響應式佈局 |
---|---|---|---|---|---|---|---|
viewport | 優化px | 僅px | 不能夠 | viewport的width&initial-scale屬性 | 適應(操做簡單) | 完美支持 | 不支持 |
媒體查詢 | 改變佈局 特定尺寸設置 |
所有 | 能夠 | @media screen and (max-width){} @import url(example.css) screen and (min-width:800px); |
可適應(需特殊參數) | 不支持 | 支持(簡單/全面) |
js | 經過計算 可改變尺寸&佈局 可連續變尺寸 |
所有 | 能夠 | document.documentElement.clientWidth window.devicePixelRatio |
適應(操做複雜) | 完美支持 | 支持(複雜/全面) |
模板引擎 | JS用來改變佈局 | 不用來調整尺寸 | 能夠(佈局) | 使用JS | 使用JS | 使用JS | 支持(簡單/侷限) |
C. 總結佈局
一、rem爲如今比較流行的適配方案,與它優勢相似的有vw。它們都是CSS3中新出現的相對長度單位,vw還有配套系列例如vh等。這兩種單位,都集絕對長度單位和相對長度單位優勢於一身,可相對一個統一的標準變化。它們均可配合js進行等比變化,函數性變化或者媒體查詢變化等多種基準靈活變化(同一根值點,使用rem/vw的不一樣元素僅可對應其中一種變化,不可對它們進行區別設置。【除非用js去修改CSS中選中的個別元素的值。】),vw相對rem的優勢是:若進行基於屏幕寬度的等比變化,vw不用配合js便可使用);
二、vw的致命缺點:兼容性相較rem低不少,瀏覽器支持性差;
三、viewport對於全部使用過哪怕一次px作單位的移動頁面都必要;
四、mediaquery屬於CSS3的新增功能,可徹底用js替代。優勢是簡單方便,不用寫JS。缺點是不能進行連續性的查詢,只能枚舉查詢關鍵值;
五、JS可配合rem/vw/%/em等相對單位進行連續性的查詢和適配,也能夠模擬媒體查詢作關鍵值查詢和適配;
六、移動端字體使用px+關鍵值查詢(mediaquery/js兩種方式)最優;
七、移動端適配方案應綜合使用各類技術:字體
(1)%多用在不考慮等比縮放而考慮徹底適應屏幕的地方,適合個別局部使用。好比活動頁面背景;
(2)rem通常用於等比縮放,適合大範圍局部使用(我的認爲,vw解決兼容性問題後可徹底代替rem);
(3)px通常用於字體。與適配的思路相反,px多用於大小屏佔比需區分的地方,因此px通常不隨應配頁面變化(僅使用viewport適配到不一樣手機的獨立像素,或是使用媒體查詢作幾個關鍵值);
(4)viewport依然用在全部要用到px的移動端頁面;
(5)頁面元素尺寸變化使用js最佳,僅考慮適配屏幕而非等比縮放的地方可直接使用%;
(6)佈局變化通常使用媒體查詢,也能夠用模板引擎;
八、移動端各狀況下適配方案:
(1)字體變化:px+媒體查詢;
(2)尺寸變化:
- 需等比縮放的元素:rem+js;
- 需寬(或者:寬+高)全屏。例如純色/平鋪背景圖或者蒙層:%;
(3)佈局變化(響應式佈局):媒體查詢;
(4)獨立像素比變化(任何移動端頁面):viewport;
【1】移動端佈局之rem https://isux.tencent.com/web-app-rem.html 【2】viewport詳解 http://www.cnblogs.com/2050/p/3877280.html 【3】media橫豎屏適配問題 http://www.genshuixue.com/i-cxy/p/8016190