visibility
试试
要同时隐藏元素并将其从文档布局中删除,请将 display
属性设置为 none
,而不是使用 visibility
。
语法
css
/* Keyword values */
visibility: visible;
visibility: hidden;
visibility: collapse;
/* Global values */
visibility: inherit;
visibility: initial;
visibility: revert;
visibility: revert-layer;
visibility: unset;
visibility
属性指定为下面列出的关键字值之一。
值
无障碍
在元素上使用 visibility
值为 hidden
将将其从 辅助功能树 中移除。这将导致元素及其所有后代元素不再由屏幕阅读器技术宣布。
插值
动画时,可视性值将在可见和不可见之间插值。因此,开始值或结束值之一必须是 visible
,否则将无法进行 插值。该值将作为离散步骤进行插值,其中缓动函数的 0
到 1
之间的值映射到 visible
,而缓动函数的其他值(仅在过渡的开始/结束处发生或作为具有 [0, 1] 之外的 y 值的 cubic-bezier()
函数的结果发生)映射到更接近的端点。
备注
- 一些现代浏览器缺少或部分不正确地支持
visibility: collapse
。它可能不会在除表格行和列以外的元素上被正确地视为visibility: hidden
。 - 当应用于表格行时,如果表格包含跨越可见行和折叠行的单元格(
<td>
<tr>
元素),则单元格可能会以意想不到的方式呈现。如果跨越单元格是在折叠行中定义的,浏览器不会呈现表格单元格,就像后续行中的单元格存在且应用了visibility: collapse
一样。当单元格在可见行中定义并跨越折叠行时,单元格内容不会重新流动,但单元格本身的呈现方式因浏览器而异。大多数浏览器会将单元格的块大小减少隐藏行的块大小。这意味着内容可能比单元格在块大小方向上的尺寸更大。根据浏览器,溢出的内容要么被裁剪,就像设置了overflow: hidden
一样,而内容在其他浏览器中会像设置了overflow: visible
一样流入下一行。在其他浏览器中,单元格的呈现方式就好像该行没有折叠一样,该行中的所有其他单元格都隐藏了,就像在单个单元格而不是行本身设置了visibility: collapse
一样。 visibility: collapse
可能会改变表格的布局,如果表格在折叠的单元格内嵌套了表格,除非在嵌套表格上显式指定了visibility: visible
。
正式定义
初始值 | visible |
---|---|
应用于 | 所有元素 |
继承 | 是 |
计算值 | 按指定 |
动画类型 | 一个 visibility |
正式语法
示例
基本示例
HTML
html
<p class="visible">The first paragraph is visible.</p>
<p class="not-visible">The second paragraph is NOT visible.</p>
<p class="visible">
The third paragraph is visible. Notice the second paragraph is still occupying
space.
</p>
CSS
css
.visible {
visibility: visible;
}
.not-visible {
visibility: hidden;
}
表格示例
HTML
html
<table>
<tr>
<td>1.1</td>
<td class="collapse">1.2</td>
<td>1.3</td>
</tr>
<tr class="collapse">
<td>2.1</td>
<td>2.2</td>
<td>2.3</td>
</tr>
<tr>
<td>3.1</td>
<td>3.2</td>
<td>3.3</td>
</tr>
</table>
CSS
css
.collapse {
visibility: collapse;
}
table {
border: 1px solid red;
}
td {
border: 1px solid gray;
}
规范
规范 |
---|
CSS 显示模块级别 3 # visibility |
浏览器兼容性
BCD 表格仅在浏览器中加载