Vant移动端REM适配

1,287 阅读1分钟

Vant 中的样式默认使用 px 作为单位,如果需要使用 rem 单位,推荐使用以下两个工具:

一. 使用 lib-flexible 动态设置 REM 基准值(html 标签的字体大小)

  1. 安装
# yarn add amfe-flexible
npm i amfe-flexible

2、然后在 main.js 中加载执行该模块

import 'amfe-flexible'

截屏2021-08-24 上午11.38.27.png

二、使用 postcss-pxtorempx 转为 rem

注意:不能改行内样式的px

1、安装

# yarn add -D postcss-pxtorem
# -D 是 --save-dev 的简写
npm install postcss-pxtorem@5.1.1 -D

2、然后在项目根目录中创建 .postcssrc.js 文件

/**
 * PostCSS 配置文件
 */

module.exports = {
  // 配置要使用的 PostCSS 插件
  plugins: {
    // 配置使用 autoprefixer 插件
    // 作用:生成浏览器 CSS 样式规则前缀
    // VueCLI 内部已经配置了 autoprefixer 插件
    // 所以又配置了一次,所以产生冲突了
    // 'autoprefixer': { // autoprefixer 插件的配置
    //   // 配置要兼容到的环境信息
    //   browsers: ['Android >= 4.0', 'iOS >= 8']
    // },

    // 配置使用 postcss-pxtorem 插件
    // 作用:把 px 转为 rem

    /*如果你使用的是基于 lib-flexable 的 REM 适配方案,则应该设置为你的设计稿的十分之一。
    例如设计稿是 750 宽,则应该设置为 75。
    但是 Vant 是基于 375 写的,所以如果你设置为 75 的话,Vant 的样式就小了一半。*/

    // 如果是vant的样式,则按照37.5来转换
    // 如果是自己的样式,按照75来转换
    'postcss-pxtorem': {
      rootValue({ file }) {
        return file.indexOf('vant') !== -1 ? 37.5 : 75
      },
      propList: ['*']
    }
  }
}

3、配置完毕,重新启动服务

最后测试:刷新浏览器页面,审查元素的样式查看是否已将 px 转换为 rem

截屏2021-08-24 上午11.42.06.png