rem单位是相对于根元素html的font-size来决定的,根元素的font-size相当于提供了一个基准,当页面的size发生变化时,只需要改变font-size的值,那么以rem为固定的元素的大小也会发生响应式的变化,因此,如果通过rem来实现响应式布局,只需要根据视图容器的大小,动态的改变font-size的值即可;
<style>
html {
font-size: 16px;
}
* {
margin: 0px;
padding: 0px;
}
#parent {
width: 50rem;
height: 25rem;
background: green;
border: 1px solid red;
text-align: center;
line-height: 25rem;
}
</style>
<body>
<div id="parent">
慢慢加油
</div>
</body>
<script>
function refreshRem() {
var docE1 = document.documentElement; //documentElement 属性返回文档的根节点。
var width = docE1.getBoundingClientRect().width; //方法返回元素的大小及其相对于视口的位置
var flexibleEl = document.querySelectorAll('div');
var rem = width / 50;
console.log(width, rem);
docE1.style.fontSize = rem + 'px';
flexibleEl.rem = window.rem = rem;
}
window.addEventListener('resize', refreshRem);
</script>