visibility:collapse
和display:none
之间的区别是什么?
答案 0 :(得分:83)
简短版:
前者用于完全隐藏表格元素。后者用于完全隐藏其他所有内容。
长版:
visibility: collapse
完全隐藏了一个元素(因此它不会占用布局中的任何空格),但仅限于the element is a table element。
如果在表格元素以外的元素上使用,visibility: collapse
将像visibility: hidden
一样使用。这使得元素不可见,但它仍将占用布局中的空间。
display: none
隐藏了完全元素,因此它不占用布局中的任何空格,但不应在表格元素上使用。
答案 1 :(得分:24)
visibility: collapse
的行为与visibility: hidden
完全相同:元素所需的空间是“保留”#39;在布局中,但元素本身不会被渲染,留下一个空白区域。
我知道有三个例外:表格行,表格列和弹性项目,其中visibility: collapse
的行为类似display: none
,但有一个主要区别:' strut& #39 ;.您可以将strut视为零大小的占位符,在布局过程中不会声明自己的任何空间,但仍然是格式化结构的一部分并参与某些大小的计算。
例如,折叠的表格行不会占据表格中的任何垂直空间,但表格列仍将按尺寸标注' as-if'折叠的行及其内容实际上是可见的。这是为了防止列摆动'摆动'行被切换进出。同样,折叠的柔性项目不会沿主轴占据任何空间,但仍然会影响柔性线的交叉尺寸。
'不要将display: none
用于表格'是一个有价值的经验法则,但它并不能说明整个故事。
display: none
。visibility: collapse
。以下是一个代码段,演示了表格行display: none
和visibility: collapse
之间的区别:
.show-right-border {
border-right: 1px black solid;
}

<h3>visibility: collapse</h3>
<table class="show-right-border">
<tr>
<td>Short text.</td>
<td style="visibility: collapse;">Loooooooooong text.</td>
</tr>
</table>
<h3>display: none</h3>
<table class="show-right-border">
<tr>
<td>Short text.</td>
<td style="display: none;">Loooooooooong text.</td>
</tr>
</table>
&#13;
答案 2 :(得分:17)
visibility:collapse
应仅用于表格。在其他元素上,它将充当visibility:hidden
。
visibility:hidden
隐藏元素,但仍然占据元素的空间,而display:none
甚至不会保留空间。
资源:
关于同一主题:
答案 3 :(得分:3)
visibility:collapse
仅对表格元素有display:none
行为。在其他元素上,它应呈现为hidden
。
答案 4 :(得分:0)
您还可以将visibility: collapse
应用于flexbox容器(弹性项目)下的元素。它会像您将其应用于具有display: table-row
或display: table-column