rem + vw 适配

519 阅读1分钟

在已了解flexible的基础上,来研究另一种适配方法:rem + vw

在做移动端的时候,用的比较多的就是 flexible 来动态修改根字体大小,使用 rem 单位来适配的,这样做始终有一些不好的地方,因为必须通过js来改变,且该方法逐渐被废弃使用了;

在项目中可能会遇到过加载页面、或者刷新页面的时候,有那么一瞬间整个页面是缩小不规则状态,因为这时 flexible.js 还没加载完成,加载完成后整个页面才是正常的样式

而 vw 也是通过浏览器窗口宽度来计算的(当有竖向滚动条时,100vw ≠ width:100%),

微信截图_20220408114523.png vw、rem 计算方法:

例:设计稿为 750px,则

750px = 100vw
∴  1px = 100/750 = 0.133333vw
∴  100px = 13.3333vw

这时根字体设置为 html{font-size:13.3333vw}
∵  1rem = 根大小 = 13.333vw = 100px
∴  1rem = 100px

例:设计稿字体大小为 24px,就可以写成 .24rem 了,在375屏下审查的时候会发现已经自动变为 12px 了

所以,这里就可以直接根据设计稿来写rem了,

但是有个问题,vw 是根据浏览器窗口来改变的,当窗口宽度达到一定值的时候,我想把内容区域固定最大宽度居中显示,那么这里就有问题了

可以这样解决,通过媒体查询,设置一个临界值,比如:

@media screen and (min-width:769px){
   html{font-size:102px}
}

这里的值可以根据情况来写,这样不管窗口有多宽,样式都不会放大了