下面是手写rem适配
1rem的大小等于1html的fontsize的大小
<style>
.header {
width: 120px;
height: 120px;
background-color: rgb(74, 173, 91);
}
.content {
width: 120px;
height: 120px;
background-color: rgb(29, 214, 159);
}
.footer {
width: 120px;
height: 120px;
background-color: rgb(19, 130, 221);
}
</style>
<body>
<div class="header">头部</div>
<div class="content">内容</div>
<div class="footer">尾部</div>
<script>
rem();
//手写 rem 布局
window.onresize = function() {
rem();
}
//rem函数
function rem() {
// html的宽度
let myHtml = document.documentElement.clientWidth;
// body的宽度
let myBody = document.body.clientWidth;
console.log(myHtml, myBody);
let h = myHtml || myBody
document.documentElement.style.fontSize = (h / 750 * 100) + 'px'
}
</script>
</body>
什么是vw vh
属于一种新兴的移动端布局配置,功能与rem类似
vw 视口的最大宽度,1vw等于视口宽度的百分之一
vh 视口的最大高度,1vh等于视口高度的百分之一
如何自动适配vw vh
安装依赖
npm install postcss-px-to-viewport -D
1
修改 .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`
}
}
}