移动适配方案
flexible rem方案
flexible
方案是阿里早期开源的一个移动端适配解决方案,引用flexible
后,我们在页面上统一使用rem
来布局。代码如下:
// set 1rem = viewWidth / 10
function setRemUnit () {
var rem = docEl.clientWidth / 10
docEl.style.fontSize = rem + 'px'
}
setRemUnit();
上面的代码中,将html
节点的font-size
设置为页面clientWidth
(布局视口)的1/10
,即1rem
就等于页面布局视口的1/10
,这就意味着我们后面使用的rem
都是按照页面比例来计算的。
这时,我们只需要将UI
出的图转换为rem
即可。
以iPhone6
为例:布局视口为375px
,则1rem = 37.5px
,这时UI
给定一个元素的宽为75px
(设备独立像素),我们只需要将它设置为75 / 37.5 = 2rem
。
当然,每个布局都要计算非常繁琐,我们可以借助PostCSS
的px2rem
插件来帮助我们完成这个过程。
vh、vw方案
vh、vw
方案即将视觉视口宽度 window.innerWidth
和视觉视口高度 window.innerHeight
等分为 100 份。
上面的flexible
方案就是模仿这种方案,因为早些时候vw
还没有得到很好的兼容。
-
vw(Viewport's width)
:1vw
等于视觉视口的1%
-
vh(Viewport's height)
: