之前做移动端适配时,基本上是采用rem方案,现在发现了一个新的方案,就是用viewport单位,现在viewport单位越来越受到众多浏览器的支持,postcss-px-to-viewport,将px单位自动转换成viewport单位,用起来超级简单。
1.安装
npm install postcss-px-to-viewport --save-dev
2.在vue.config.js中配置
module.exports = {
css: {
// 将项目和插件中的px转成rem
loaderOptions: {
postcss: {
plugins: [
require('postcss-px-to-viewport')({
unitToConvert: 'px', // 要转换的单位,默认是'px'
viewportWidth: 375, // 视窗的宽度,对应的是我们设计稿的宽度,一般是375
unitPrecision: 3, // 指定`px`转换为视窗单位值的小数位数
propList: ['*'], // 指定可以转换的css属性,默认是['*'],代表全部属性进行转换
viewportUnit: 'vw', //指定需要转换成的视窗单位,建议使用vw
fontViewportUnit: 'vw', // 指定字体需要转换成的视窗单位,默认vw
selectorBlackList: ['.pc-', '.van-'], // 指定不转换为视窗单位的类,可以自定义,可以无限添加,建议定义一至两个通用的类名
minPixelValue: 1, // 小于或等于`1px`不转换为视窗单位,你也可以设置为你想要的值
mediaQuery: false, // 允许在媒体查询中转换`px`
exclude: [/node_modules/]// 设置忽略文件,用正则做目录名匹配
})
]
}
}
}
}
3.项目源码:
https://gitee.com/english-sunflower/vue-vant-element.git
项目使用了postcss-px-to-viewport插件,并集成了elenentUI和vantUI,完美兼容pc端和移动端