rem(font size of the root element)是指相对于根元素的字体大小的单位。简单的说它就是一个相对单位。看到rem大家一定会想起em单位,em(font size of the element)是指相对于父元素的字体大小的单位。它们之间其实很相似,只不过一个计算的规则是依赖根元素一个是依赖父元素计算。
官方话术:是一个用JavaScript工具和插件转换CSS代码的工具。
声明:它不是 “ 预处理器 ”,因它没有像使用预处理那些功能,且能和预处理器结合使用;它也不是一个真正的 “ 后处理器 ”。因后处理器通常被视为在完成的样式表中根据CSS规范处理CSS,常做的是CSS属性添加浏览器私有前缀,但PostCSS并不局限于此。所以,最好的解释,它是个处理器(平台),拥有多样化的功能插件,可根据自己的需要配置需要的功能,甚至你自己都可编写PostCSS插件。
常用的插件有autoprefixer添加浏览器私有前缀,px自动化转rem需要什么插件? 答案是postcss-pxtorem。
安装
npm i postcss-pxtorem --save配置
项目下新建postcss.config.js文件
module.exports = {
plugins: {
'postcss-pxtorem': {
//根元素字体大小
rootValue: 16,
//匹配CSS中的属性,* 代表启用所有属性
propList: ['*'],
//转换成rem后保留的小数点位数
unitPrecision: 5,
//小于12px的样式不被替换成rem
minPixelValue: 12,
//忽略一些文件,不进行转换,比如我想忽略 依赖的UI框架
exclude: ['node_modules']
}
}
}
添加完毕,尝试重启下项目,使文件生效~
重启后,打开Chrome控制台,可以发现所有的px都被自动转化为rem。
也可以根据不同屏幕宽度进行等比缩放,新建rem.js文件,在main.js引用
const baseSize = 16
function setRem() {
const scale = document.documentElement.clientWidth / 1920
document.documentElement.style.fontSize = baseSize * scale + 'px'
}
setRem()
window.onresize = function () {
setRem()
}