【问题标题】:CSS nth-match doesn't workCSS nth-match 不起作用
【发布时间】:2014-02-05 16:15:19
【问题描述】:

nth-match 应该按照以下方式在 jsfiddle 中工作

:nth-match(even of p,h3) {text-decoration: underline;}

这应该在ph3 元素的每一秒下划线。但是,它不起作用 - 无论是在 FF 还是在 Chrome 中:

http://jsfiddle.net/VUKQS/

问题出在哪里?

【问题讨论】:

标签: html css css-selectors


【解决方案1】:

CSS4 选择器目前没有太多浏览器支持,see here

您可以使用nth-of-type,这是一个具有更好浏览器支持的 CSS3 选择器 (see here):

p:nth-of-type(even) {text-decoration: underline;}

DEMO

【讨论】:

  • 谢谢,有趣的链接。我对nth-of-type 不感兴趣,但谢谢。
  • @Tomas 如果nth-of-type 能满足您的需求,您为什么不感兴趣呢?或者您只是为了当前浏览器支持测试 CSS4 伪类?
  • 这与您的 nth-match 示例有何不同?
  • @Tomas 你是什么意思它没有?正如@tomsullivan1989 所说,它与您的nth-match 示例完全相同。
  • 我认为混淆源于小提琴中的代码与问题中提供的代码不匹配。在fiddle中,给定的选择器是:nth-match(even of p),在功能上确实等同于p:nth-of-type(even)。但是,在问题中,选择器是:nth-match(even of p, h3),它是not 等效的。考虑一个具有以下顺序的子元素的 div:p + h3 + p + h3 - 选择器 :nth-match(even of p, h3) 将只匹配两个 h3 元素,而不匹配 p 元素。
【解决方案2】:

我一直在寻找,似乎 CSS4 选择器:nth-match 没有太多支持(如果有的话)。

您可以在这里进行测试:http://css4-selectors.com/browser-selector-test/

注意:这是:nth-match pseudo-class 上的 w3.org 文档。

【讨论】:

  • 这个选择器不再存在(参见 BoltClock 的回答)。它已被nth:child() 取代。
  • @TylerH 你确定吗?它在这里的工作草案中:w3.org/TR/selectors4/#nth-match-pseudo
  • @callum 是的。你看过我的评论吗? BoltClock 上面的回答详细解释了它。您链接的 WD 是 2013 年 5 月的。昨天的 ED(更新频率更高的版本)显示 :nth-child():drafts.csswg.org/selectors/#child-index
【解决方案3】:

问题出在哪里?

问题在于,您将早期草稿中的想法和提案视为实际功能,使用它们时期望它们完全可以工作,更不用说跨浏览器了。查看status of the WD

这是一份草稿文件,可能随时被其他文件更新、替换或废止。除了正在进行的工作之外,引用本文档是不恰当的。

恰当的例子::nth-match() 不再存在。好吧,至少不是那种形式。它的功能(即接受一个选择器参数来匹配)并没有完全消失。相反,它被归入:nth-child(),只是two weeks after this question was originally posted。你可以在the :nth-child() section of the latest ED看到这个。

这是因为,与传统的 :nth-child() 一样,它只匹配共享同一父节点的一组兄弟节点中的元素。旧名称暗示了文档范围的匹配,即作者希望以下匹配,但 the WD never says that:

:nth-match(even of p) { text-decoration: underline; }
<p></p>
<div>
  <p></p> <!-- This should not match -->
</div>

旧名称不再使用,您的小提琴可能永远无法在任何浏览器中使用。此外,自 2013 年 5 月以来没有新的 WD,因此它应该被视为已过时。

即使在我们说话的时候,Selectors 4 规范的这些重大变化仍在进行中,我不认为任何新功能会很快实现。

【讨论】:

  • 如果这对您来说还不够混乱,Safari 9 附带了这个新版本的 :nth-child(),但它的release notes 引用了 WD 而不是 ED。提示每个人都在挠头,因为他们单击 WD 的链接并试图找出与当前版本的不同之处。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-12
  • 2017-06-09
  • 2017-01-22
  • 1970-01-01
  • 2011-07-06
  • 1970-01-01
相关资源
最近更新 更多