visibility
试一试
visibility: visible;
visibility: hidden;
visibility: collapse;
<section class="default-example" id="default-example">
<div class="example-container">
<div class="transition-all" id="example-element">Hide me</div>
<div>Item 2</div>
<div>Item 3</div>
</div>
</section>
.example-container {
border: 1px solid #c5c5c5;
padding: 0.75em;
width: 80%;
max-height: 300px;
display: flex;
}
.example-container > div {
background-color: rgb(0 0 255 / 0.2);
border: 3px solid blue;
margin: 10px;
flex: 1;
}
#example-element {
background-color: rgb(255 0 200 / 0.2);
border: 3px solid rebeccapurple;
}
若要隐藏元素并将其从文档布局中移除,请将 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 属性通过下面列出的关键词值之一指定。
值
无障碍
对元素使用 hidden 的 visibility 值会将其从可访问性树中移除。这将导致该元素及其所有后代元素不再被屏幕阅读技术播报。
插值
动画时,visibility 值在可见和不可见之间插值。因此,起始或结束值之一必须是 visible,否则无法进行插值。该值作为离散步骤进行插值,其中缓动函数在 0 和 1 之间的值映射到 visible,缓动函数的其他值(仅在过渡开始/结束时或由于 y 值超出 [0, 1] 的 cubic-bezier() 函数而发生)映射到更近的端点。
注意
- 在某些现代浏览器中,
visibility: collapse的支持缺失或部分不正确。对于表格行和列以外的元素,它可能无法被正确地视为visibility: hidden。 - 当应用于表格行时,如果表格包含跨越可见行和折叠行的单元格(
<td>和<th>元素),则单元格可能会以意外的方式渲染。如果跨越单元格在折叠行中定义,浏览器不会渲染表格单元格,如同后续行中的单元格存在并应用了visibility: collapse。当单元格在可见行中定义并跨越折叠行时,单元格内容不会重排,但单元格本身的呈现方式因浏览器而异。大多数浏览器会通过隐藏行的块大小来减小单元格的块大小。这意味着内容在块大小方向上可能大于单元格。根据浏览器,溢出内容要么被裁剪,如同设置了overflow: hidden,而在其他浏览器中内容会溢出到后续行,如同设置了overflow: visible。在其他浏览器中,单元格的渲染方式如同该行未折叠,而该行中的所有其他单元格都被隐藏,如同visibility: collapse应用于单个单元格而非行本身。 - 如果表格在折叠的单元格中包含嵌套表格,
visibility: collapse可能会改变表格的布局,除非在嵌套表格上明确指定visibility: visible。
正式定义
| 初始值 | visible |
|---|---|
| 应用于 | 所有元素 |
| 继承性 | 是 |
| 计算值 | 同指定值 |
| 动画类型 | 一个 visibility |
正式语法
visibility =
visible |
hidden |
force-hidden |
collapse
示例
基本示例
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 Display Module Level 3 # visibility |
| Scalable Vector Graphics (SVG) 2 # VisibilityControl |
浏览器兼容性
加载中…
另见
display- SVG
visibility属性