依赖
npm i lib-flexible postcss-px2rem --save
然后再main.js中
import 'lib-flexible'
由于flexible会动态给页面header中添加标签,所以务必请把目录 public/index.html 中的这个meta name=“viewport” 标签删除或注释!!!
配置postcss-px2rem
创建vue.config.js,再文件中写
css: {
loaderOptions: {
css: {},
postcss: {
plugins: [
require('postcss-px2rem')({
// 以设计稿750为例, 750 / 10 = 75
remUnit: 75
}),
]
}
}
},
当然他默认的尺寸可能不满足我们的需求,可以修改源码,打开./node_modules/lib-flexible/flexible.js,找到如下片段源码:
function refreshRem(){
var width = docEl.getBoundingClientRect().width;
if (width / dpr > 540) {
width = 540 * dpr;
}
var rem = width / 10;
docEl.style.fontSize = rem + 'px';
flexible.rem = win.rem = rem;
}
找到问题了就解决问题,既然文件把屏幕宽度写死了,那就不写死:
function refreshRem(){
var width = docEl.getBoundingClientRect().width;
if (width / dpr > 540) {
width = width * dpr;
}
var rem = width / 10;
docEl.style.fontSize = rem + 'px';
flexible.rem = win.rem = rem;
}
现在再重启项目,看一下运行结果