<style>
body,html {
height: 100%;
}
.header {
100%;
height: 30px;
background: #f00;
}
.content {
position: relative;
height: 100%;
}
.content .left {
300px;
height: 100%;
background: #ff0;
}
.content .right {
position: absolute;
left: 300px;
top: 0;
right: 0;
background: #0f0;
/* 100%; */
height: 100%;
}
</style>
<header class="header"> </header> <article class="content"> <section class="left"> </section> <section class="right"> </section> </article>
一、js实现
body标签高度设置为100%,通过resize事件监听浏览器的大小改变,动态设置元素高度为body高度。
<script>
const contentHeight = document.querySelector('body').offsetHeight
const leftEle = document.querySelector('.left')
const rightEle = document.querySelector('.right')
window.onresize=()=> {
leftEle.style.height = contentHeight
rightEle.style.height = contentHeight
}
</script>
二、css实现
calc计算高度,值得注意的是calc中运算符+/-两边必须留空格才能被解析为正确的表达式。
calc规则:
- 除以零会导致HTML解析器生成错误。
- 在
+与-运营商必须用空格包围。例如,calc(50% -8px)将被解析为百分比,后跟负长度 - 无效表达式 - 而calc(50% - 8px)百分比后跟减法运算符和长度。同样,calc(8px + -50%)将其视为长度,后跟加法运算符和负百分比。 - 在
*与/运营商不需要的空白,但增加它的一致性允许和建议。 - 涉及自动和固定布局表中的表列,表列组,表行,表行组和表格单元格的宽度和高度百分比的数学表达式可被视为
auto已指定。 - 允许嵌套
calc()函数,在这种情况下,内部函数被视为简单的括号。
.content {
position: relative;
height: calc(100% - 30px);
/* height: 100%; */
}
to be continued...