依赖名 | 版本 |
---|---|
pnpm | 8.14.0 |
Node | 16.20.1 |
Vue | 3.3 |
Vite | 5.0.8 |
pnpm install postcss-px-to-viewport@1.1.1 --save-dev
import postcsspxtoviewport from 'postcss-px-to-viewport'
export default defineConfig({
css: {
postcss: {
plugins: [
postcsspxtoviewport({
unitToConvert: 'px', // 要转化的单位
viewportWidth: 750, // UI设计稿的宽度,如果你的设计稿是375就改成375
unitPrecision: 6, // 转换后的精度,即小数点位数
propList: ['*'], // 指定转换的css属性的单位,*代表全部css属性的单位都进行转换
viewportUnit: 'vw', // 指定需要转换成的视窗单位,默认vw
fontViewportUnit: 'vw', // 指定字体需要转换成的视窗单位,默认vw
selectorBlackList: ['ignore-'], // 指定不转换为视窗单位的类名,
minPixelValue: 1, // 默认值1,小于或等于1px则不进行转换
mediaQuery: true, // 是否在媒体查询的css代码中也进行转换,默认false
replace: true, // 是否转换后直接更换属性值
exclude: [/node_modules/], // 设置忽略文件,用正则做目录名匹配
landscape: false, // 是否处理横屏情况
}),
]
}
}
})
提示:如果你的设计稿是375就把750改一下即可。
Vant自带是375尺寸的,而我们是750最后插件帮我们转化为375的,也就是我们写的px都是2倍的,如果vant也跟着转化那就是375 / 2,但它不需要转化,所以在转换时我们忽略它。
如果你的设计稿是375,那就不用将忽略vant。
exclude: [/node_modules\/vant/], // 设置忽略文件,用正则做目录名匹配
<template>
<div class="testFont">测试1</div>
</template>
<style scoped lang="scss">
.testFont{
font-size: 30px;
}
</style>
<span style="font-size: 30px">测试2</span>
参考文章:https://www.cnblogs.com/goloving/p/15238345.html