移动端适配(这里只考虑等比例缩放方案,即页面宽度100%撑满设备,内容等比例缩放)的核心思想,就是需要一个弹性的单位,将固定尺寸(因为设计师只会给你出一套图)的ui设计稿等比例放大缩小以适应不同尺寸的设备的宽度。
rem适配方案
1rem长度等于html标签的font-size长度
所以根据这个定义可知,rem不同于百分比%,em这些单位依赖于父元素的宽度,它在同一个环境中是相同长度的单位,具有统一性。而且是可变的可配置的一个单位,只需改变html标签的font-size大小,就能动态配置rem的长度。
rem适配方案的核心思想就是将rem配置成弹性单位,比如1/10的页面宽度,这样对应于设计稿上尺寸就能等比例转换为rem单位了,举个例子:
一个750px的ui标注图,上面有个长度为75px的div,由于75px在这个设计稿中占比75px/750px = 1/10, 所以就相当于了一个rem的宽度。我们就用rem表示页面宽度的1/10
那么,怎么将rem设置为1/10呢,这个就很简单了,用js获取整个页面的宽度,然后除以10就能获得1rem所对应的px了,然后将html元素的font-size设置为这个rem基数,rem就配偶完成了。
vw适配方案
rem方案的核心思想就是通过js配置rem基数,使得rem变成一个弹性单位。现在好了,Viewport units(vw, vh, vmax, vmin)单位的出现使得原本需要模拟的弹性单位得到了原生的支持。
100vw = 整个页面宽度,所有1vw = 1/100的页面宽度。所以使用vw完全可以代替rem方案。