是否可以选择不以文字开头的元素?

时间:2017-10-24 21:35:41

标签: html css css-selectors

我想要一个与'infeasible'匹配的CSS选择器:

<code>

但不是<p><code>foo</code> bar</p>

<code>

<p>foo <code>bar</code></p> 不起作用。它匹配两者。

只是因为我不认为这是可能的。

我想我会在放弃之前给社区一个机会。

编辑 - 人们一直将此标记为重复,所以让我明确一下:如果当前的最佳答案是正确的,那么您引用的问题的答案具有相同的根本原因,但是没有提出同样的问题。这两个问题的答案完全有可能不同 - 或者如果不是这样,那么“为什么”只能回答这个问题,而不是那个问题。

2 个答案:

答案 0 :(得分:3)

您的段落中有两个元素。

<code>bar</code>

<anonymous-inline-box>foo</anonymous-inline-box>

匿名内联元素是自动生成的,无法通过CSS进行定位。因此,无法相对于文本节点将样式应用于code元素。

如果无法将文本包装在实际元素中,请尝试使用JavaScript。

以下是规范中的更多细节:

  

9.2.2.1 Anonymous inline boxes

     

任何直接包含在块容器元素中的文本都必须被视为匿名内联元素。

     

此类匿名内联框从其块父框中继承可继承属性。

答案 1 :(得分:0)

选择器不区分唯一的子元素,该子元素是其父元素的唯一子元素节点,也是唯一具有一个或多个兄弟文本节点的子元素。在这两种情况下,子元素都将匹配:only-child;在后一种情况下,文本节点并不重要。