• 如何进行各个终端的页面适配(react项目安装插件 postcss-px-to-viewport)


    一般我们都是按着UI稿的尺寸来写固定的px 这个习惯。
    我们可以引用插件来做。(以reactApp为例)
    插件是 postcss-px-to-viewport
    1、先安装这个插件 这个插件会自动将样式文件中的 px 转换为 vw

    npm i postcss-px-to-viewport
    
    • 1

    2、在webpack的配置文件中(webpack.config.js),引入这个插件,并进行配置。

    (1)、先导入插件
    
    • 1
    // pxToVw
    const postcsspxtoviewport = require('postcss-px-to-viewport')
    
    • 1
    • 2

    (2)、再进行配置 在 getStyleLoaders()中配置

     const getStyleLoaders = (cssOptions, preProcessor) => {
        const loaders = [
          isEnvDevelopment && require.resolve('style-loader'),
          isEnvProduction && {
            loader: MiniCssExtractPlugin.loader,
            // css is located in `static/css`, use '../../' to locate index.html folder
            // in production `paths.publicUrlOrPath` can be a relative path
            options: paths.publicUrlOrPath.startsWith('.')
              ? { publicPath: '../../' }
              : {},
          },
          {
            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: {
              postcssOptions: {
                // Necessary for external CSS imports to work
                // https://github.com/facebook/create-react-app/issues/2677
                ident: 'postcss',
                config: false,
                plugins: !useTailwind
                  ? [
                    'postcss-flexbugs-fixes',
                    [
                      '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.
                    /核心代码/        
                    'postcss-normalize',
                    postcsspxtoviewport({
                      unitToConvert: 'px', // 要转化的单位
                      viewportWidth: 750, // UI设计稿的宽度
                      unitPrecision: 6, // 转换后的精度,即小数点位数
                      propList: ['*'], // 指定转换的css属性的单位,*代表全部css属性的单位都进行转换        
                      viewportUnit: 'vw', // 指定需要转换成的视窗单位,默认vw
                      fontViewportUnit: 'vw', // 指定字体需要转换成的视窗单位,默认vw
                      selectorBlackList: ['ignore-'], // 指定不转换为视窗单位的类名,
                      minPixelValue: 1, // 默认值1,小于或等于1px则不进行转换
                      mediaQuery: true, // 是否在媒体查询的css代码中也进行转换,默认false
                      replace: true, // 是否转换后直接更换属性值
                      landscape: false // 是否处理横屏情况
                    })
                  ]
                  
                  : [
                    'tailwindcss',
                    'postcss-flexbugs-fixes',
                    [
                      'postcss-preset-env',
                      {
                        autoprefixer: {
                          flexbox: 'no-2009',
                        },
                        stage: 3,
                      },
                    ],
                  ],
              },
              sourceMap: isEnvProduction ? shouldUseSourceMap : isEnvDevelopment,
            },
          },
        ].filter(Boolean);
        if (preProcessor) {
          loaders.push(
            {
              loader: require.resolve('resolve-url-loader'),
              options: {
                sourceMap: isEnvProduction ? shouldUseSourceMap : isEnvDevelopment,
                root: paths.appSrc,
              },
            },
            {
              loader: require.resolve(preProcessor),
              options: {
                sourceMap: true,
              },
            }
          );
        }
        return loaders;
      };
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95

    在上例的配置中,页面的参考宽高为 750 1624
    这个可以根据设计稿的宽高来,这样方便!

  • 相关阅读:
    Windows bat脚本启动jar包(亲测有效),,监控端口,如果没有,就启动jar包,自动退出cmd框
    将 TiDB 迁移至 Kubernetes
    代码随想录第五十天|123.买卖股票的最佳时机III、188.买卖股票的最佳时机IV
    pytorch,torchvision与python版本对应关系及安装命令
    Java 某个经纬度是否在genjson文件中
    Pandas中的五种数据查询方法--【数值,列表,区间,条件,函数查询】
    8、常用基本命令(重要)
    雷电_安卓模拟器安装burpsuit_CA证书
    Linux学习笔记(4)
    碳排放预测模型 | Python实现基于机器回归分析的碳排放预测模型——数据清理和准备
  • 原文地址:https://blog.csdn.net/qq_52181663/article/details/134463765