rem在pc端的妙用
1,pc端使用rem尺寸,直接npm i lib-flexible插件是没用的,因为它的动态修改rem的触发条件是在clientWidth在540px以下,正好实现代码很精简,就直接抽离出依赖了(偷。
2,核心代码如下,直接在 var width = docEl.getBoundingClientRect().width/3; 用一个/3,扩大了作用范围,当视口宽度大于1620px时,1rem锁定为54px;当视口在1050px和1620px之间,1rem是width/10,此时根元素的fontSize是不断变换的,所以换算出来的px也是和窗口宽度等比例放大缩小的;当视口宽度小于1050px,再一次锁死rem为35。所有的width都是文档对象的宽度,这个宽度有别于window的宽度,是可以控制的,所以,rem相对于vw(视口宽度)的优势有:1,比例变化可以干预,并且影响到全局(vm的换算暂时不能干预)。2,单位可以自由规定,换算方便。
function refreshRem(){
var width = docEl.getBoundingClientRect().width/3;
if (width / dpr > 540) {
width = 540 * dpr;
}
else if(width / dpr < 350){
width = 350 * dpr;
}
var rem = width / 10;
docEl.style.fontSize = rem + 'px';
flexible.rem = win.rem = rem;
}