:empty

Baseline 广泛可用 *

此特性已相当成熟,可在许多设备和浏览器版本上使用。自 ⁨2015 年 7 月⁩以来,各浏览器均已提供此特性。

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

:empty CSS 伪类表示没有任何子元素的元素。子元素可以是元素节点或文本(包括空白)。注释、处理指令和 CSS content 不会影响元素是否被视为空。

试一试

div:empty {
  outline: 2px solid deeppink;
  height: 1em;
}
<p>Element with no content:</p>
<div></div>

<p>Element with comment:</p>
<div><!-- A comment --></div>

<p>Element with nested empty element:</p>
<div><p></p></div>

注意:Selectors Level 4 中,:empty 伪类被更改为类似于 :-moz-only-whitespace,但目前还没有浏览器支持。

语法

css
:empty {
  /* ... */
}

无障碍

屏幕阅读器等辅助技术无法解析空的交互式内容。所有交互式内容都必须有一个可访问名称,该名称通过为交互式控件的父元素(锚点按钮等)提供文本值来创建。可访问名称将交互式控件暴露给可访问性树,这是一个用于与辅助技术通信信息的 API。

提供交互式控件可访问名称的文本可以使用属性组合隐藏,这些属性可以在视觉上将其从屏幕上移除,但仍可被辅助技术解析。这通常用于仅依靠图标传达目的的按钮。

示例

HTML

html
<div class="box"><!-- I will be lime. --></div>
<div class="box">I will be pink.</div>
<div class="box">
  <!-- I will be pink in older browsers because of the whitespace around this comment. -->
</div>
<div class="box">
  <p>
    <!-- I will be pink in all browsers because of the non-collapsible whitespace and elements around this comment. -->
  </p>
</div>

CSS

css
.box {
  background: pink;
  height: 80px;
  width: 80px;
}

.box:empty {
  background: lime;
}

结果

规范

规范
选择器 Level 4
# the-empty-pseudo

浏览器兼容性

另见