移动端适配方案 postcss-px-to-viewport
大约 2 分钟约 496 字
由于 px 是固定单位,所以在不同设备上显示的大小是固定的,而不同设备又有不同大小,为了适配不同设备的单位大小,需要将 px 转换为视口单位。
确定方案之后,那么思考如何将 px 转为视口单位呢,一个一个算?不太可能,因为你事先并不知道用户手中的设备是什么大小,这样换算得到的结果并不能满足所有用户的需求,因此需要一个更为适用的方法。
这就需要用到一个插件:postcss-px-to-viewport。
安装
npm install postcss-px-to-viewport --save-dev
参数配置
新建 postcss.config.js,默认配置如下:
module.exports = {
  plugins: {
    'postcss-px-to-viewport': {
      unitToConvert: 'px', // 需要转换的单位
      viewportWidth: 320, // 设计稿的视口宽度
      unitPrecision: 5, // 单位转换后保留的精度
      propList: ['*'], // 能转换的vw属性列表
      viewportUnit: 'vw', // 希望使用的视口单位
      fontViewportUnit: 'vw', // 字体使用的视口单位
      selectorBlackList: [], // 需要忽略的css选择器
      minPixelValue: 1, // 设置最小的转换数值,如果为1,只有大于1的值才会被转换
      mediaQuery: false, // 媒体查询中是否需要转换单位
      replace: true, // 是否直接更换属性值
      exclude: undefined, // 忽略一些文件比如 node_modules
      include: undefined, // 如果设置了 include,则仅转换匹配的文件
      landscape: false, // 是否添加根据 landscapeWidth 生成的媒体查询条件 @media (orientation: landscape)
      landscapeUnit: 'vw', // 横屏时使用的单位
      landscapeWidth: 568 // 横屏时使用的视口宽度
    }
  }
}
详细配置见 postcss-px-to-viewport。
当全部设置完成后,重新运行项目,查看 css 属性,即可发现所有 px 单位全部变成了 vw 单位。
切换不同的设备时,大小会随之发生变化。