rem.js
目前笔者解决移动端的尺寸带来的样式问题,都是通过
viewport + rem
的。viewport 相信大家都用过了,而rem
需要用js动态设置html
的字体大小。
动态设置rem的根字体大小
- 首先我们要确定你的设计稿大小是多少,一般移动端设计稿的宽度是
750
,当然也用些用1080
的;- 我们要确定rem和px的转换比例,前提是要注意浏览器的字体大小是有限制的,比如chrome的字体不能小于12px;
- 记得加上
viewport
,比如这样设置:<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no">
;
/**
* design: 是设计稿的宽度,也是页面的最大宽度
* 这里的比例是1:100; 1rem = 100px;
**/
function setRem(design=750){
rem();
window.onresize = function(){
rem();
}
function rem(){
let winWidth = document.documentElement.getBoundingClientRect().width;
winWidth = Math.min(winWidth,design);
let fontSize = winWidth / design *100;
document.documentElement.style.fontSize = fontSize+'px';
document.body.style.fontSize = '16px';
// 这里要注意, 系统字体的缩放是会影响到rem的
let computedRem = window.getComputedStyle(document.documentElement)['font-size'].replace('px','');
document.documentElement.style.fontSize=fontSize*fontSize/computedRem+'px';
}
}