【发布时间】:2019-11-13 08:57:10
【问题描述】:
我读过offsetHeight、clientHeight和scrollHeight。我仍然无法弄清楚如何将正确的高度设置为可以包括的 div:
- 盒子大小
- 填充
- 边距
- 边框
- 其他可能推动 div 的东西
在下面的示例中,我制作了 4 个部分。第一部分未触及,因此该部分的高度是自动且正确的。当我尝试使用 offsetHeight、clientHeight 和 scrollHeight 设置其他部分的高度时,结果不再正确。
如何以始终有效的方式计算它?我在 Stackoverflow 上看到了很多答案,但没有可靠的解决方案。
window.addEventListener('DOMContentLoaded', (event) => {
let items1 = document.querySelectorAll('.section1 div');
let items2 = document.querySelectorAll('.section2 div');
let items3 = document.querySelectorAll('.section3 div');
items1.forEach((item) => {
item.style.height = item.offsetHeight + 'px';
});
items2.forEach((item) => {
item.style.height = item.clientHeight + 'px';
});
items3.forEach((item) => {
item.style.height = item.scrollHeight + 'px';
});
});
.div1 {
border: 5px solid #fff;
padding: .5rem;
margin: .5rem;
box-sizing: border-box;
}
.div2 {
border: 5px solid #fff;
padding: .5rem;
margin: .5rem;
}
.div3 {
padding: .5rem;
margin: .5rem;
box-sizing: border-box;
}
.div4 {
padding: .5rem;
margin: .5rem;
}
.div5 {
}
div[class^=div] {
background: #eee;
outline: 1px solid red;
}
body {
display: flex;
}
section {
background: #f5f5f5;
margin: .5rem;
width: 100px;
}
<section class="correct">
<div class="div1">Some<br>text</div>
<div class="div2">Some<br>text</div>
<div class="div3">Some<br>text</div>
<div class="div4">Some<br>text</div>
<div class="div5">Some<br>text</div>
</section>
<section class="section1">
<div class="div1">Some<br>text</div>
<div class="div2">Too<br>High</div>
<div class="div3">Some<br>text</div>
<div class="div4">Too<br>high</div>
<div class="div5">Some<br>text</div>
</section>
<section class="section2">
<div class="div1">Too<br>low</div>
<div class="div2">Too<br>high</div>
<div class="div3">Some<br>text</div>
<div class="div4">Too<br>high</div>
<div class="div5">Some<br>text</div>
</section>
<section class="section3">
<div class="div1">Too<br>low</div>
<div class="div2">Too<br>high</div>
<div class="div3">Some<br>text</div>
<div class="div4">Too<br>high</div>
<div class="div5">Some<br>text</div>
</section>
【问题讨论】:
-
“正确的高度”是什么意思?您是指在 DOM 中创建子级时 div 的自然高度?
-
如果你愿意的话,内部高度。最后三个部分没有一个与第一个部分匹配。我已经为这个问题添加了我自己的答案,我认为这是正确的。
标签: javascript css height