我们有一个选择器 :empty
可以匹配 完全为空 的元素:
<p></p>
但我有一个条件,它可能是空的,或者它可能包含换行符或空格:
<p> </p>
我找到了 Firefox 的解决方案, :-moz-only-whitespace
:
:empty { width: 300px; height: 15px; background: blue; }
:-moz-only-whitespace { width: 300px; height: 15px; background: orange; }
<p></p>
<p> </p>
<p>This is paragraph three.</p>
其他浏览器是否有类似的解决方案?
PS: 在 JSFiddle 中
原文由 Deadpool 发布,翻译遵循 CC BY-SA 4.0 许可协议
很多人都忽略了这个问题的要点,我在下面的阐述中已经解决了这个问题,但是对于那些只是在寻找答案的人,我在这里反映了最后一段:
虽然问题描述了一个
<p>
元素,其中包含少量常规空格字符,这似乎是一种疏忽,但更常见的是看到标记中的元素仅包含缩进和空行形式的空格,例如作为:某些元素,如上例中的
<li>
以及<p>
,具有可选的结束标记,这可能会在 DOM 处理以及元素间空白的情况下导致意外的副作用.例如,以下两个<ul>
元素不会产生等效的节点树,特别是第一个不会在选择器级别 3 中产生li:empty
:鉴于 HTML 认为元素间空白在设计上是透明的,因此希望使用 CSS 定位此类元素而不必求助于修改 HTML 或生成它的应用程序(尤其是如果您最终必须实现和测试一个特殊情况只是这样做)。为此, Selectors 4 现在重新定义
:empty
以包含仅包含空格的元素。这最初被提议作为一个单独的伪类:blank
但最近被重新连接到:empty
在确定根据原始行为没有太多站点这样做是安全的之后。浏览器将需要更新他们对:empty
的实现以符合 Selectors 4。如果你需要支持旧的浏览器,你将不得不经历标记只包含空格的元素或在之前修剪空格的麻烦或事后。