css - 考虑到文本节点,第一个 child 是否有 CSS 选择器?

标签 css

我正在尝试为作为第一个子元素的元素找到一个 CSS 选择器,并考虑可能出现在它之前的任何文本节点(即,如果有任何元素出现在前面,可能是未包装的文本节点,则不再考虑第一个 child )。

但是好像:first-child不包含文本节点,:nth-child等也不包含

这是我所在的位置,但它不起作用:

.red-if-not-first {
  color: red;
  font-weight: bold;
}

.red-if-not-first:first-child {
  color: green;
}
<p>
  Lorem ipsum. <span class="red-if-not-first">This should be red, not green, because some content comes before it.</span> Eum natus culpa officia a molestias, sed beatae aut in autem architecto iure repellat quam placeat, expedita maxime laborum necessitatibus repudiandae. Corrupti!
</p>

<p>
  <span class="red-if-not-first">This is rightly green, not red, because it's first bit of content in this paragraph.</span> Lorem ipsum dolor sit amet, consectetur adipisicing elit. Eum natus culpa officia a molestias, sed beatae aut in autem architecto iure repellat quam placeat, expedita maxime laborum necessitatibus repudiandae. Corrupti!
</p>

不幸的是,我无法控制标记。

我知道这是 asked before ,不过那是三年前的事了,这在前端不亚于一千年!

最佳答案

如果出于某种奇怪的原因,您只能勉强支持 Gecko,则可以使用-moz-first-node 选择器来做到这一点。

https://developer.mozilla.org/en-US/docs/Web/CSS/:-moz-first-node

关于css - 考虑到文本节点,第一个 child 是否有 CSS 选择器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42074295/

相关文章:

html - 单击更高 z-index div 下面的链接

html - 如何使用 CSS 将文本从一个框流到另一个框

css - flex-shrink 在什么情况下应用于 flex 元素,它是如何工作的?

html - 如何根据特定行垂直对齐内联 block 元素,忽略其他行?

css - 我可以仅使用 CSS 检测元素可见性吗?

javascript - 如何通过javascript显示隐藏的div?

html - 左对齐容器中的倾斜文本

在第一次出现的滑出 Div 上触发的 JQuery 函数

html - div彼此相邻,对齐到底部

html - 为什么 CSS 在 JSP 上不起作用?