参照以上vant官网提供的方式,发现只能编译项目内部开发的页面,根本无法将vant样式px编译为vw单位,以下是使用官方例子后编译后的样式单位

 

项目基于vue-cli5搭建的,后续解决方式采用webpack中postcss-loader参数postcssOptions解决。具体无法解析的原因不详,估计与vue-cli配置有关。以下是解决后的样式单位

 

附上解决方案,首先安装postcss-px-to-viewport

npm install postcss-px-to-viewport --save-dev

以下是vue.config.js的代码,并且支持了项目ui设计稿为750px标准情况

const { defineConfig } = require("@vue/cli-service");

module.exports = defineConfig({
  css: {
    loaderOptions: {
      postcss: {
        postcssOptions: (loaderContext) => {
          return {
            plugins: [
              ["autoprefixer"],
              // vant px转vw。参坑:单独写在postcss.config.js中无法解析vant内部样式
              {
                "postcss-px-to-viewport": {
                  unitToConvert: "px",
                  // 区分vant设计以375为基准。实际项目ui为750的情况
                  viewportWidth: loaderContext.resourcePath.includes("vant") ? 375 : 750,
                  unitPrecision: 5,
                  propList: ["*"],
                  viewportUnit: "vw",
                  fontViewportUnit: "vw",
                  selectorBlackList: [],
                  minPixelValue: 1,
                  mediaQuery: false,
                  replace: true,
                  exclude: [],
                  landscape: false,
                  landscapeUnit: "vw",
                  landscapeWidth: 568,
                },
              },
            ],
          };
        },
      },
    },
  },
});
Logo

前往低代码交流专区

更多推荐