react中使用适配插件postcss-pxtore

3,322 阅读1分钟
  1. 下载插件
npm install postcss-pxtorem --save-dev
  1. 配置对应文件 这是使用create-react-app创建完项目并eject初始化之后的webpack.config.dev.js 文件
//修改配置
// common function to get style loaders
const getStyleLoaders = (cssOptions, preProcessor) => {
  const loaders = [
    require.resolve('style-loader'),
    {
      loader: require.resolve('css-loader'),
      options: cssOptions,
    },
    {
      // 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,
          }),
         ** require('postcss-pxtorem')({
            rootValue: 100,
            propWhiteList: [],
            minPixelValue:2,
          })**
        ],
      },
    },
  ];
  if (preProcessor) {
    loaders.push(require.resolve(preProcessor));
  }
  return loaders;
};

修改index.html文件

<title>React App</title>
    <script>
        (function (doc, win) {
            var docEl = doc.documentElement,
            resizeEvt = 'orientationchange' in window ? 'orientationchange' : 'resize',
            recalc = function () {
                var clientWidth = docEl.clientWidth;
                if (!clientWidth) return;
                docEl.style.fontSize = 100 * (clientWidth / 750) + 'px';
            };
            if (!doc.addEventListener) return;
            win.addEventListener(resizeEvt, recalc, false);
            doc.addEventListener('DOMContentLoaded', recalc, false);
        })(document, window);
    </script>

注意点:

  1. 这个仅在移动端使用过,pc端目前没有使用

  2. 在css文件中直接使用px,插件会自动转化为rem,但是写内联样式的时候并不会自动转换,要写成rem