做爲一個小前端,常常要和H5打交道,這就面臨着不一樣終端的適配問題。
Flexible方案經過Hack手段來根據設備的dpr
值相應改變<meta>
標籤中viewport
的值,給我更貼切的體會就是經過js腳本根據設備的dpr和設計圖的寬度來計算出html
的font-size
值,而後就運用rem
單位開發能夠等比例縮放的H5頁面。
可是!Flexible已經完成了他自身的歷史使命,咱們能夠放下Flexible,擁抱新的變化。css
在移動端佈局,咱們須要面對兩個最爲重要的問題:html
1px
、2x
圖等一系列的問題。那麼這個佈局方案也是針對性的解決這些問題,只不過解決這些問題再也不是使用Hack手段來處理,而是直接使用原生的CSS技術來處理的。之前的Flexible方案是經過JavaScript來模擬vw
的特性,那麼到今天爲止,vw
已經獲得了衆多瀏覽器的支持,也就是說,能夠直接考慮將vw
單位運用於咱們的適配佈局中。前端
vw
是基於Viewport視窗的長度單位,這裏的視窗(Viewport)指的就是瀏覽器可視化的區域,而這個可視區域是window.innerWidth/window.innerHeight
的大小。用下圖簡單的來示意一下:
css3
在CSS Values and Units Module Level 3中和Viewport相關的單位有四個,分別爲vw
、vh
、vmin
和vmax
。git
vw
:是Viewport's width的簡寫,1vw
等於window.innerWidth
的1%
vh
:和vw
相似,是Viewport's height的簡寫,1vh
等於window.innerHeihgt
的1%
vmin
:vmin
的值是當前vw
和vh
中較小的值vmax
:vmax
的值是當前vw
和vh
中較大的值若是設計稿用750px
寬度的,100vw = 750px
,即1vw = 7.5px
。那麼咱們能夠根據設計圖上的px
值直接轉換成對應的vw
值。若是不想本身計算,咱們可使用PostCSS的插件postcss-px-to-viewport,讓咱們能夠直接在代碼中寫px
。github
具體的PostCSS咱們放到另一篇文章吧,畢竟我還不會~瀏覽器