我对以下代码有理解问题:
let myDiv1 = document.getElementById("myDiv1");
alert("Click me to make 'Hello' vanish");
myDiv1.style.height = "0px";
let myDiv2 = document.getElementById("myDiv2");
alert("Click me to make 'World' vanish");
myDiv2.style.height = "0";
.myClass1 {
box-sizing: border-box;
overflow: hidden;
padding-top: 2em;
padding-bottom: 2em;
background-color: yellow;
}
.myClass2 {
box-sizing: content-box;
overflow: hidden;
padding-top: 2em;
padding-bottom: 2em;
background-color: orange;
}
<body>
<div id="myDiv1" class="myClass1">
Hello
</div>
<div id="myDiv2" class="myClass2">
World
</div>
</body>
我理解第二个(橙色)的行为div
:它有box-sizing: content-box;
,所以它的高度不包括填充或边框。因此,当它的高度设置为 0 时,它基本上缩小了文本“World”的高度,但填充保持原样。由于 padding 超出了原始文本高度,因此文本在 padding 中仍然可见。div
只有现在在(由于降低的高度)之外的那部分填充变得不可见(由于overflow: hidden;
)。
不过,我不明白第一个(黄色)的行为div
。它有box-sizing: border-box;
,所以它的高度确实包括填充和边框。因此,当它的高度设置为 0 时,它应该缩小到“真正的”零高度,这意味着文本、填充和边框应该在 之外div
,因此应该是不可见的(由于overflow: hidden;
)。
谁能解释为什么不是这种情况以及为什么第一个div
行为与第二个一样div
?
PS 在 Firefox 和 Chrome 中测试,在撰写本文时都是最新的(生产渠道)。