zarm(众安科技) 的是根据375px的设计稿去做的,理想视口宽度为375px。
然而我们自己的项目和antd-mobile是按照750px的设计稿去设计的。
再不改变原有项目的基础上我们怎么解决呢,我们的视线回到webpack上来 ,重新看一下这份.postcssrc.js
文件,它除了暴露一个对象,也可以暴露一个函数,无论暴露什么,在webpack运行时,都会被我们配置的海量文件读取并执行。
暴露函数有一个好处,可以拿到webpack运行的当前执行文件的信息。
那么我们可以有这样一个思路:如果读取的是zarm相关的文件,viewportWidth
就设为375,如果是其他的文件,我们就按照我们UI的宽度来设置viewportWidth
,即750。
改写.postcssrc.js
文件配置如下:
const path = require('path');
module.exports = ({ file }) => {
const designWidth = file.dirname.includes(path.join('node_modules', 'vant')) ? 375 : 750;
return {
plugins: {
autoprefixer: {},
"postcss-px-to-viewport": {
unitToConvert: "px",
viewportWidth: designWidth,
unitPrecision: 6,
propList: ["*"],
viewportUnit: "vw",
fontViewportUnit: "vw",
selectorBlackList: [],
minPixelValue: 1,
mediaQuery: true,
exclude: [],
landscape: false
}
}
}
}
注意:这里使用path.join('node_modules', 'zarm')是因为适应不同的操作系统,在mac下结果为node_modules/vant,而在windows下结果为node_modules\vant