postcss-pxtorem是px转rem的插件,是移动端比较好的适配方案
1.安装postcss-pxtorem
npm i postcss-pxtorem@4.0.1 --save
*因为我使用的是vant2,所以postcss-pxtorem的版本不会太高.
*如果报错:“Error: PostCSS plugin postcss-pxtorem requires PostCSS 8.”报错的意思是postcss-pxtorem为8.0,但实际上官网最新版本为6.0(有可能是6.0版本与vant不兼容),所以直接把postcss-pxtorem版本降成对应的版本就好了
2.根目录下创建postcss.config.js文件,内容如下
module.exports = {
plugins: {
autoprefixer: {},
"postcss-pxtorem": {
"rootValue": 75,//750宽的画稿
"propList": ["*"]
}
}
}
3.utils文件夹下(没有就新建一个),新建一个rem.js
// 基准大小
const baseSize = 75 //跟postcss.config.js中rootValue的值是一致的
// 设置 rem 函数
function setRem () {
// 当前页面宽度相对于 750 宽的缩放比例,可根据自己需要修改。
const scale = document.documentElement.clientWidth / 750
// 设置页面根节点字体大小
document.documentElement.style.fontSize = (baseSize * Math.min(scale, 2)) + 'px'
console.log("fontsize", document.documentElement.style.fontSize);
}
// 初始化
setRem()
// 改变窗口大小时重新设置 rem
window.onresize = function () {
setRem()
}
4..main.js引入rem.js文件
import '@/utils/rem.js'
*注意,如果有引入import 'lib-flexible/flexible.js',一定要注释掉,我发觉在rem.js中每次尺寸变化时, document.documentElement.style.fontSize计算出来的值都会被另一值覆盖,后来发现lib-flexible搞的鬼,估计lib-flexible应该是另一种适配解决方案,没必要与postcss-pxtorem共存.
5.在入口文件(public/index.html)头部加上
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=0.5, user-scalable=no,user-scalable=yes">
6.最后启动,大功告成!
npm run dev