关键词:lib-flexible,postcss-px2rem
1.依次下载上面两个依赖包
npm i lib-flexible --save
npm i postcss-px2rem --save-dev
2.在vue.config.js配置使其生效
module.exports = {
...
css: {
loaderOptions: {
plugins: [
require('postcss-px2rem')({
// 设计稿的宽度/100
remUnit: 75
})
]
}
}
}
如此就集成完毕了,接下来就可以照着设计小姐姐给的UI稿愉快的写px了,是多少px就写多少px。
查看效果
3.拓展问题1:引入第三方组件库如vantUI,组件样式变小?
首先引入vantUI,随便先找个button组件看看效果
但vantUI的设计稿不是750而是375,所以当我们以75为基准值进行开发时,自然就会造成vantUI所有组件样式都变小。
知道了原因,现在我们只需把remUnit设置为37.5即可适配vanUI,而对于我们自己的设计稿由于是750的,这时只需把得到的标注值/2即可,例如一个盒子的宽高是40x40,那我们将其设置为20x20即可(或者让设计师输入375的设计稿,这样就不用除以2了),这样我们自己写的样式和第三方组件的样式都能保持一致的效果。
4.拓展问题2:如何不让第三方组件库不转换为rem单位,依旧使用px做为单位?
如果只希望自己写的样式转为rem,而项目中使用的其他组件库依旧使用px做为单位,可以使用postcss-px2rem-exclude实现
npm i postcss-px2rem-exclude --save-dev
修改配置
// 注释掉原有的postcss-px2rem
// require('postcss-px2rem')({
// remUnit: 37.5
// })
require('postcss-px2rem-exclude')({
remUnit: 37.5,
// 忽略vant
exclude: /node_modules|vant/i
})
5.拓展问题3:如何让部分样式保留px,不转换为rem?
如果你希望部分样式依旧使用px做为单位,例如font-size,可以通过在样式后面追加/no/来达到目的。
ps:笔者发现,在生产环境下/no/并没有生效,依旧会被转为rem,笔者通过使用大写PX的方式让其不转为rem,如果你知道该问题的原因或者有更好的解决方法,欢迎在评论区交流!