1.安装 flexible和 postcss-px2rem
npm i lib-flexible postcss-px2rem --save
2.flexible和 postcss-px2rem插件作用
a.flexible会为页面根据屏幕自动添加标签,动态控制initial-scale,maximum-scale,minimum-scale等属性的值 ===>设备缩放比
例子:
b.postcss-px2rem会将px转换为rem,rem单位用于适配不同宽度的屏幕,根据标签的font-size值来计算出结果,1rem=html标签的font-size值。
如下所示:
box的单位为px,在网页运行时,自动转换成rem
3.引入lib-flexible
在项目入口文件main.js 中引入lib-flexible
import 'lib-flexible'
注意:由于flexible会动态给页面header中添加标签,所以务必请把目录 public/index.html 中的这个标签注释!!!
问题:
我在上面的步骤全部完成后有一个问题,我明明设置的宽度是按1920来的,计算出来1rem=54px。
最后发现 flexible.js文件中:
找到问题了就解决问题,既然文件把屏幕宽度写死了,那就不写死:
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;
}flexible.js文件路径(node_modules\lib-flexible\flexible.js)
4.配置postcss-px2rem
px2rem的配置放在vue-cli3 项目中vue.config.js中。
vue-cli3创建的项目是没有vue.config.js的,但是最后你开发完了项目也要打包的时候也得手动创建这个文件!
手动在项目根目录创建vue.config.js,引入代码
下面是vue.config.js,复制过去可直接使用
module.exports = {
// css相关配置
css: {
// 启用 CSS modules
modules: false,
// 是否使用css分离插件
extract: true,
// 开启 CSS source maps?
sourceMap: false,
// css预设器配置项
loaderOptions: {
css: {},
postcss: {
plugins: [
//remUnit这个配置项的数值是多少呢??? 通常我们是根据设计图来定这个值,原因很简单,便于开发。
//假如设计图给的宽度是1920,我们通常就会把remUnit设置为192,这样我们写样式时,可以直接按照设计图标注的宽高来1:1还原开发。
require('postcss-px2rem')({
remUnit: 192
})
]
}
},
},
}remUnit :假如设计图给的宽度是1920,我们通常就会把remUnit设置为192(设计图宽度的十分之一),这样我们写样式时,可以直接按照设计图标注的宽高来1:1还原开发。
现在重启项目,看一下运行结果.

京公网安备 11010502036488号