:empty伪类仅匹配无任何子节点(含文本、元素、注释)的元素;空格、换行、或注释均使其失效;视觉隐藏需用visibility: hidden等,语义空校验应交由JavaScript处理。
css:empty伪类只匹配真正“空”的元素
:empty 是 CSS 中一个严格意义上的判断器:它只匹配**内部没有任何子节点**的元素,包括文本节点、元素节点、注释节点都不允许存在。哪怕是一个空格、换行符、制表符,都会让 :empty 失效——因为这些都属于文本节点。
常见误解是认为“内容为空”就匹配,比如
和
看起来一样,但后者含一个空格文本节点,:empty 不会选中它。
-
→ 匹配:empty -
→ 不匹配(空格是文本节点)立即学习“前端免费学习笔记(深入)”;
-
→ 不匹配(是子元素节点) -
→ 不匹配(注释也是子节点)
用 white-space + visibility 隐藏内容但不破坏 :empty 判断
如果想让视觉上“空”,又保留 :empty 的匹配能力,不能靠删掉内容或加空格,而要控制渲染行为。典型做法是把内容设为不可见,但不移除节点本身: