前端使用postcss-px-to-viewport实现移动端或者PC端自适应

安装postcss-px-to-viewport

npm install postcss-px-to-viewport -S

配置webpack.config.js或者package.json(二选一即可)

  1. 方法一:配置webpack.config.js
const postcssPxToViewport = require('postcss-px-to-viewport'); // 引入自适应插件
{
        // Options for PostCSS as we reference these options twice
        // Adds vendor prefixing based on your specified browser support in
        // package.json
        loader: require.resolve('postcss-loader'),
        options: {
          // Necessary for external CSS imports to work
          // https://github.com/facebook/create-react-app/issues/2677
          ident: 'postcss',
          plugins: () => [
            require('postcss-flexbugs-fixes'),
            require('postcss-preset-env')({
              autoprefixer: {
                flexbox: 'no-2009',
              },
              stage: 3,
            }),
            // Adds PostCSS Normalize as the reset css with default options,
            // so that it honors browserslist config in package.json
            // which in turn let's users customize the target behavior as per their needs.
            postcssNormalize(),
			
			// 这是要增加的部分
            postcssPxToViewport({
              viewportWidth: 1920, // 设计稿宽度
              unitPrecision: 5, // px转换后的小数保留位数,有时候不能整除
              minPixelValue: 1, // 小于或等于`1px`时不转换为视窗单位
            })
          ],
          sourceMap: isEnvProduction ? shouldUseSourceMap : isEnvDevelopment,
        },
      },
  1. 方法2:配置package.json
"postcss": {
  "plugins": {
    "autoprefixer": {},
    "postcss-px-to-viewport": {
      "viewportWidth": 1920, // 设计稿宽度
      "unitPrecision": 5, // px转换后的小数保留位数,有时候不能整除
      "minPixelValue": 1 // 小于或等于`1px`时不转换为视窗单位
    }
  }
}

其他配置可以自行查询如下列属性等:

mediaQuery: false,   // 允许在媒体查询中转换,默认为false
propList: ["*"],   // 转化为vw的属性列表
viewportUnit: "vw",   // 指定转换的单位
fontViewportUnit: "vw",   // 字体使用的单位
selectorBlaskList: [".ignore-"],    // 指定不需要转换的类

postcss-px-to-viewport的缺点

postcss-px-to-viewport虽然好用,但是却有一个缺点,就是只对style内的样式进行转换,行内样式没办法转换,我还没解决,因为我没写行内样式

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值