Vant 移动端 REM 适配


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

lib-flexible (opens new window)用于设置 rem 基准值

postcss-pxtorem (opens new window)是一款 postcss 插件,用于将单位转化为 rem

下面我们分别将这两个工具配置到项目中完成 REM 适配。

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

1、安装

    # yarn add amfe-flexible
    npm i amfe-flexible

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

    import 'amfe-flexible'

3、最后测试:在浏览器中切换不同的手机设备尺寸,观察 html 标签 font-size 的变化

二、使用 postcss-pxtorem (opens new window)将 px 转为 rem
1、安装

    # yarn add -D postcss-pxtorem
    # -D 是 --save-dev 的简写
    npm install postcss-pxtorem@5.1.1  -D   // **建议这个版本号**

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

vant中有描述 关于适配的使用 https://vant-contrib.gitee.io/vant/#/zh-CN/advanced-usage#rem-bu-ju-gua-pei

    module.exports = {
      plugins: {
        //自动添加浏览器厂商声明前缀,用来兼容不同的浏览器
        //VueCLI已经在内部默认配置了autoprefixer
        //autoprefixer: {
        //   //browsers用来配置要兼容到的系统(浏览器)环境l/l/
        //   这个配置没有问题,但是写到这里会有控制台编译警告
        //为什么?因为 VueCLI是通过项目中的 .browserslistrc 文件来配置要兼容的环境信息的,所有要修改.browserslistrc
        / / browsers: [ ' Android >= 4.0', 'i0S >= 8 ']
        / / },

        'postcss-pxtorem': {
          rootValue: 37.5,   // 如果将来是自己的设计图(750px),直接写75即可! 就可以设计图是多少px,css书写就写多少px  
          propList: ['*'],
        },
      },
    };

修改.browserslistrc

但是上述配置只适用于vant内部的相关组件内容,我们自己书写的样式,并不是按照这个,我们希望设计图是多少px,就写多少px,故而修改内容如下

    module.exports = {
      plugins: {
        // postcss-pxtorem 插件的版本需要 >= 5.0.0
        'postcss-pxtorem': {
          rootValue({ file }) {  // 如果是vant的就按照375 尺寸, 如果是其他的就是按照750 
            return file.indexOf('vant') !== -1 ? 37.5 : 75;   // rootValue 的值一般是 设计稿  1/10
          },
          propList: ['*'],
        },
      },
    };

3、配置完毕,重新启动服务
最后测试:刷新浏览器页面,审查元素的样式查看是否已将 px 转换为 rem。


需要注意的是:

该插件不能转换行内样式中的 px,例如


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM