使用px转成rem:让网页根据设备dpr和宽度,利用viewport和html根元素的font-size配合rem来适配不同尺寸的移动端设备。
yarn add lib-flexible 或者 npm install lib-flexible(公共)
在main.js引入中:import 'lib-flexible/flexible.js'
yarn add postcss-loader postcss-px2rem
npm install --save-dev postcss-loader postcss-px2rem
(推荐此方案)
然后在配置文件中配置,(我是在根目录新建 vue.config.js
并在其中配置的,也可在package.json
中配置)
module.exports = {
css: {
loaderOptions: {
css: {
// options here will be passed to css-loader
},
postcss: {
// options here will be passed to postcss-loader
plugins: [require('postcss-px2rem')({
remUnit: 75
})]
}
}
}
}
yarn add postcss-pxtorem 或 npm install postcss-pxtorem --save
如果配置文件是package.json
(在你创建vue项目时,会让你选择配置文件),则在package.json内,添加postcss:
"postcss": {
"plugins": {
"autoprefixer": {},
"postcss-pxtorem": {
"rootValue": 75, // 设计稿宽度的1/10,(JSON文件中不加注释,此行注释及下行注释均需要删除)
"propList":["*"] // 需要做转化处理的属性,如`hight`、`width`、`margin`等,`*`表示全部
}
}
},
如果配置文件是自定义配置文件,则在配置文件vue.config.js
中,并配置如下信息:
module.exports = {
css: {
loaderOptions: {
css: {
// options here will be passed to css-loader
},
"postcss": {
"plugins": {
"autoprefixer": {},
"postcss-pxtorem": {
"rootValue": 75,
"propList":["*"]
}
}
}
}
}
}
index.html
中配置<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, viewport-fit=cover, user-scalable=no">
npm install amfe-flexible --save-dev
main.js
中配置引入import 'amfe-flexible';
npm install postcss-pxtorem -D
index.html
中配置<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, viewport-fit=cover, user-scalable=no">
vue.config.js
中配置 const autoprefixer = require('autoprefixer');
const pxtorem = require('postcss-pxtorem');
module.exports = {
publicPath:'/', /*根路径*/
outputDir: 'dist',/*构建输出目录*/
assetsDir: 'assets', /*静态资源目录(js,css,img,fonts)*/
// lintOnSave:false, /*是否开启eslint保存检测(严格模式),有效值:true||false||'error'*/
publicPath: process.env.NODE_ENV === 'production' ? '/vant-demo/' : '/',
css: {
loaderOptions: {
postcss: {
plugins: [
autoprefixer(),
pxtorem({
rootValue: 37.5,//此处设置为37.5后则为1:1比例
propList: ['*']
})
]
}
}
},
}
babel.config.js
中设置module.exports = {
presets: ['@vue/cli-plugin-babel/preset'],
plugins: [
[
'import',{
libraryName: 'vant',
libraryDirectory: 'es',
style: true
},'vant']
]
};