rpx布局
微信的rpx,就是系統級的rem(把頁面按比例分割750份,1rpx=window.innerWidth/750),或者scale伸縮布局的width=750。通過rpx,大家只需要根據750的設計稿寫代碼即可,不必擔心它在各個平台的適配情況,實際上在各個平台都會長得一樣。
以下簡單介紹其他布局
scale伸縮布局
scale伸縮布局顧名思義,就是通過拉伸縮小頁面來達到自適應。有兩種方法,一是通過js更改viewport的initial-scale,這種方法比較麻煩,另一種是直接寫死viewport的寬度,例如:<meta name="viewport" content="width=360, user-scalable=no">,意思就是告訴瀏覽器:這個頁面我要一直用360px的寬度處理,在不同的尺寸上,麻煩伸縮一下。假如在320的iphone上,放大到360,在375的iphone上,縮小到360。這樣我只需要以360這個尺寸出設計稿就行,頁面會伸縮適應。實際效果可以通過手機訪問:scale伸縮demo。scale伸縮的問題在於,不能顯式設置minimum-scale=1.0,否則就達不到效果。而這個值是chromium37以上的webview觸發gpu raster的一個條件,所以用這種方法就沒法利用gpu raster硬件加速。
流式布局
流式布局需要用到百分比或者flex,即寬度永遠鋪滿頁面寬度,但高度和其他單位仍然用px。
rem
rem是近幾年比較流行的方案,淘寶移動web端就是采用此方案,由於1rem=根元素font-size,所以rem布局的本質就是通過rem把頁面按比例分割達到自適應的效果,因為rem是相對根路徑font-size尺寸,不同的頁面設置不同的font-size尺寸,即可達到自適應的效果。為了方便理解,我寫了一個簡單的rem布局demo,通過設置
document.documentElement.style.fontSize = window.innerWidth + 'px';
然后設置<div class="box"></div>的寬高等於1rem,就可以使box的寬高自適應各種設備尺寸。因為box的單位1em是跟頁面設備的寬對應的,所以能做到自適應各種尺寸。
響應式
響應式布局的問題在於需要維護多個樣式文件,維護成本太大,一般的移動H5頁面都不會優先考慮。