rem的概念
rem 是移动端适配单位,是用来写移动端布局的
1rem 的大小就是1个 html 设置的 font-size 的大小
一、手写rem适配
<script>
//rem布局适配
// 封装一个根据屏幕自适应的rem适配
function rem() {
let htmlWidth = document.documentElement.clientWidth; //获取html的宽度
let bodyWidth = document.body.clientWidth; //获取body的宽度
let width = htmlWidth || bodyWidth
//让html的宽度根据屏幕进行变化,设置font-size的大小
document.documentElement.style.fontSize = (width / 750 * 100) + 'px'
}
//页面宽度改变时触发
window.onresize = function() {
rem()
}
// 进入页面时触发
rem()
</script>
二、插件版的rem适配
Vant 中的样式默认使用
px
作为单位,如果需要使用rem
单位,推荐使用以下两个工具:
- postcss-pxtorem 是一款
postcss
插件,用于将单位转化为rem
- lib-flexible 用于设置
rem
基准值
1.安装并引入插件
cnpm install lib-flexible postcss-pxtorem --save-dev
2.在main.js中引入
// 移动端适配
import "lib-flexible/flexible";
3.新建一个 postcss.config.js文件配置设计稿
module.exports = {
plugins: {
'autoprefixer': {
browsers: ['Android >= 4.0', 'iOS >= 8']
},
'postcss-pxtorem': {
rootValue: 37.5,
propList: ['*']
} } }
4.这时候会报错 需要进行降级处理
npm i postcss-pxtorem@5.1.1
然后再次启动就可以了
5.注意事项:
vant是按照375px进行匹配,我们的设计图是750px,所以,在进入vant的rem适配之后,书写的 尺寸大小要按照设计图的大小减半
三、vw适配
1.安装依赖
npm install postcss-px-to-viewport -D
2.修改根目录下的.postcssrc.js文件
// https://github.com/michael-ciniawsky/postcss-load-config
module.exports = {
plugins: {
autoprefixer: {
overrideBrowserslist: ['Android 4.1', 'iOS 7.1', 'Chrome > 31', 'ff > 31', 'ie >= 8']
},
'postcss-px-to-viewport': {
viewportWidth: 375, // 视窗的宽度,对应的是我们设计稿的宽度,一般是750
unitPrecision: 3, // 指定`px`转换为视窗单位值的小数位数(很多时候无法整除)
viewportUnit: 'vw', // 指定需要转换成的视窗单位,建议使用vw
selectorBlackList: ['.ignore', '.hairlines'], // 指定不转换为视窗单位的类,可以自定义,可以无限添加,建议定义一至两个通用的类名
minPixelValue: 1, // 小于或等于`1px`不转换为视窗单位,你也可以设置为你想要的值
mediaQuery: false // 允许在媒体查询中转换`px`
}
}
}
3.删除原来的rem配置
(1).main.js中删除以下代码
// 移动端适配
import 'lib-flexible/flexible.js'
(2)package.json中删除以下代码
"lib-flexible": "^0.3.2",
"postcss-pxtorem": "^5.1.1",
运行起来,F12 元素 css 就是 vw 单位了
什么是vw vh
-
属于一种新兴的移动端布局配置,功能与rem类似
-
vw 视口的最大宽度,1vw等于视口宽度的百分之一
-
vh 视口的最大高度,1vh等于视口高度的百分之一
如何自动适配vw vh 安装依赖
npm install postcss-px-to-viewport -D
-
这个项目中,不能有rem适配的数据,不然会被顶替