react(craco)移动端使用postcss-px-to-viewport自适应布局

1 篇文章 0 订阅
1 篇文章 0 订阅

Craco 使用postcss-px-to-viewport

"devDependencies": {
    "@craco/craco": "^6.4.3",
    "@xianzhengquan/postcss-px-2-vw": "^0.0.1",
    "postcss": "^8.3.0"
  },
  "peerDependencies": {
    "@craco/craco": "^6.4.3",
    "postcss": "^8.3.0"
  }

本文针对的是postcss 8.x的情况,其他没有尝试,不废话上代码,最后再说为什么,有兴趣的朋友可以继续看
craco.config.js

const CracoLessPlugin = require('craco-less')
const logWebpackConfigPlugin = require('./craco-plugin-log-webpack-config')
// const {
//   when,
//   whenDev,
//   whenProd,
//   whenTest,
//   ESLINT_MODES,
//   POSTCSS_MODES,
// } = require('@craco/craco')
module.exports = {
  style: {
    postcss: {
      mode: 'extends',
      loaderOptions: {
        postcssOptions: {
          ident: 'postcss',
          plugins: [
            [
              '@xianzhengquan/postcss-px-2-vw',
              {
                unitToConvert: 'px', //需要转换的单位,默认为"px"
                viewportWidth: 1920, // 视窗的宽度,对应的是我们设计稿的宽度,一般是750
                unitPrecision: 6, //单位转换后保留的精度
                propList: [
                  //能转化为vw的属性列表
                  '*',
                ],
                viewportUnit: 'vw', // 希望使用的视口单位
                fontViewportUnit: 'vw', //字体使用的视口单位
                selectorBlackList: [], //需要忽略的CSS选择器,不会转为视口单位,使用原有的px等单位。
                minPixelValue: 1, //设置最小的转换数值,如果为1的话,只有大于1的值会被转换
                mediaQuery: false, //媒体查询里的单位是否需要转换单位
                replace: true, //是否直接更换属性值,而不添加备用属性
                exclude: /(\/|\\)(node_modules)(\/|\\)/, //忽略某些文件夹下的文件或特定文件,例如 'node_modules' 下的文件
              },
            ],
          ],
        },
      },
    },
  },
  webpack: {
    configure: (webpackConfig, { env, paths }) => {
      return webpackConfig
    },
  },
  plugins: [
    {
      plugin: CracoLessPlugin,
      options: {
        lessLoaderOptions: {
          lessOptions: {
            modifyVars: { '@primary-color': '#1DA57A' },
            javascriptEnabled: true,
          },
        },
      },
    },
    { plugin: logWebpackConfigPlugin },
  ],

  devServer: {
    open: false,
  },
}

完整代码放上来了,如果还有啥问题可以加入交流群,大家一起解决:
微信添加机器人: 15884572638 回复4就能加入交流群了,可以支持下副业就更好了(直接点回复的链接就能加入我的副业群了,都是甑选精品欧,人工挑选自己也经常用,放心食用~)

- 为什么使用@xianzhengquan/postcss-px-2-vw,而不是postcss-px-to-viewport
由于使用的是postcss 8.x版本,目前postcss-px-to-viewport的作者并未对postcss8.x做适配,在使用postcss8是会抛出

 PostCSS plugin autoprefixer requires PostCSS 8

其余配置craco可以参考,就不赘述,查阅的其他文章基本都是对着这个抄的,希望阁下是个搬运工,而不是伸手党
https://github.com/gsoft-inc/craco/blob/master/packages/craco/README.md#configuration
style里面postcss loader参考 的是readme中给出的postcss文档地址在这里插入图片描述
https://github.com/webpack-contrib/postcss-loader
postcss-px-to-viewport插件只是内部结构引入调整,属性还是正常传参
https://github.com/evrone/postcss-px-to-viewport/blob/HEAD/README_CN.md

看完应该都大致清楚了,对你有帮助再支持支持副业呗~

// 复制粘贴到wx就好啦
let wx = '15884572638'
  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值