<display-box>

Baseline 广泛可用 *

此特性已相当成熟,可在许多设备和浏览器版本上使用。自 ⁨2020 年 1 月⁩ 起,所有主流浏览器均已支持。

* 此特性的某些部分可能存在不同级别的支持。

这些关键词定义了一个元素是否生成显示框。

语法

有效的 <display-box>

contents

这些元素本身不生成特定的框。它们被它们的伪框和子框所取代。请注意,CSS Display Level 3 规范定义了 contents 值应如何影响“不寻常元素”——不纯粹由 CSS 框概念(例如被替换元素)渲染的元素。有关更多详细信息,请参阅附录 B:display: contents 对不寻常元素的影响

由于浏览器中的一个错误,目前这会将元素从可访问性树中移除——屏幕阅读器将不会查看内部内容。有关更多详细信息,请参阅下面的可访问性部分。

none

关闭元素的显示,使其对布局没有影响(文档渲染时如同该元素不存在一样)。所有后代元素也都会关闭显示。要使元素占据其通常会占据的空间,但不实际渲染任何内容,请使用 visibility 属性代替。

无障碍

目前大多数浏览器中的实现会将任何 display 值为 contents 的元素从可访问性树中移除。这将导致该元素——在某些浏览器版本中,其后代元素——不再被屏幕阅读技术宣布。根据 CSSWG 规范,这是不正确的行为。

正式语法

<display-box> = 
contents |
none

示例

在第一个示例中,类名为 secret 的段落设置为 display: none;该框和任何内容现在都不会被渲染。

display: none

HTML

html
<p>Visible text</p>
<p class="secret">Invisible text</p>

CSS

css
p.secret {
  display: none;
}

结果

display: contents

在此示例中,外部 <div> 具有 2 像素的红色边框和 300 像素的宽度。但是,它还指定了 display: contents,因此该 <div> 将不会被渲染,边框和宽度将不再适用,子元素将像父元素从未存在过一样显示。

HTML

html
<div class="outer">
  <div>Inner div.</div>
</div>

CSS

css
.outer {
  border: 2px solid red;
  width: 300px;
  display: contents;
}

.outer > div {
  border: 1px solid green;
}

结果

规范

规范
CSS Display Module Level 3
# valdef-display-contents

浏览器兼容性

另见