Vue使用Vant适配移动端

3,557 阅读2分钟

目的:Vant UI 和设计稿一起使用进行适配移动端

1.如何进行 REM 适配

// 下载插件\
npm i amfe-flexible\
// 在main.js中引入\
import 'amfe-flexible'

2. REM 适配原理

利用媒体查询或 JS 动态检测设配的宽度,不同宽度下设置对应的根元素字体大小,这样所有使用 REM 作单位的元素就跟着变化.

2.1 如何把写的 px 转换成 rem

npm install postcss-pxtorem@5 -D 
# -D 是安装到开发依赖,项目上线的时候就没用了
# yarn add postcss-pxtorem@5 -D

2.2在根目录新建 .postcssrc.js

module.exports = {
  plugins: {
    'postcss-pxtorem': {
      rootValue: 37.5,
      propList: ['*']
    }
  }
}

3. PostCSS 是什么

PostCSS 之于 CSS 就相当于 Babel 之于 JS,PostCSS 能借助各种各样的插件处理 CSS,CSS 的编译器

4. 碰到的问题: 基准值到底设置成 37.5 还是 75,发现都不行

Vant UI 设计稿 375,用 flexible.js 划分了 10 份,所以基准值是 37.5

设计师提供给的设计稿 一般是750 为啥 Vant UI 的是根据 375px 进行设计的呢?

(根据 iPhone6 的尺寸进行设计的, iPhone6 的物理像素就是 750,为了高清)

用 flexible.js 划分了 10 份,所以基准值是 75

高清是主要针对图片来说的 Vant UI 是一个 UI 库,没有涉及到图片那些东西!

5. 如何解决基准值设置多少的问题?

借助了 postcss-pxtorem 这插件,这个插件的配置选项中 rootValue 可以指定为一个函数,函数参数里面可以拿到形参 file,这个 file 就代表处理的文件的路径,判断 file 里面是否包含 'vant' 这个字符串,如果包含说明处理的就还是 vant 基准值就应该是 37.5,如果不包含说明处理的就是设计稿中咱们自己写的样式,那么基准值就应该是 75

module.exports = {
  plugins: {
    'postcss-pxtorem': {
      rootValue ({ file }) {
        // file => 要编译的样式的路径
        return file.includes('vant') ? 37.5 : 75
      },
      // * 号代表把所有的属性 px 转 rem
      propList: ['*']
    }
  }
}