0
点赞
收藏
分享

微信扫一扫

移动端如何实现Vant组件与rem适配?

闲云困兽 2022-03-11 阅读 62

🤦‍♂️🤦‍♂️问题出在哪儿?

大多数设计稿的原型都是以 iphone6 为原型,iphone6 设备的宽是 750,我们的设计稿也是这样。

👏👏我们如何解决?

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

  • postcss-pxtorem 是一款 postcss 插件,用于将单位转化为 rem

  • lib-flexible 用于设置 rem 基准值

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

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

1、安装

# yarn add amfe-flexible
npm i amfe-flexible

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

import 'amfe-flexible'

(仅需要以上两步就好啦)

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

二、使用 postcss-pxtorem 将 px 转为 rem

1、安装

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

2、然后在项目根目录中创建 .postcssrc.js 文件(文件名也可以叫postcss.config.js)

 module.exports = {
  // 配置要使用的 PostCSS 插件
  plugins: {
    'postcss-pxtorem': {
      rootValue ({ file }) {
        return file.indexOf('vant') !== -1 ? 37.5 : 75
      },
      propList: ['*']
    }
  }
}

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

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

知识点拓展✌:  

postcss-pxtorem 插件的配置

  • rootValue:表示根元素字体大小,它会根据根元素大小进行单位转换

  • propList 用来设定可以从 px 转为 rem 的属性

    例如 * 就是所有属性都要转换,如果单写一个width 就是仅转换 width 属性

rootValue 应该如何设置呢?

举报

相关推荐

0 条评论