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: ['*']
}
}
}