CSS nth-match不起作用

TMS*_*TMS 12 html css css-selectors

第n次匹配应该在jsfiddle下面的方式工作

:nth-match(even of p,h3) {text-decoration: underline;}
Run Code Online (Sandbox Code Playgroud)

这应该强调每一秒ph3元素.但是,它不起作用 - 无论是在FF还是在Chrome中:

http://jsfiddle.net/VUKQS/

哪里出了问题?

Bol*_*ock 8

哪里出了问题?

问题在于,您将早期草稿中的想法和提议视为实际功能,通过使用它们期望它们可以工作,更不用说跨浏览器了.查看WD状态:

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

例证::nth-match() 不再存在.好吧,至少不是那种形式.它的功能(即接受匹配的选择器参数)并没有完全消失; 相反,它被归入:nth-child(),这个问题最初发布两周后.您可以在此看到:nth-child()最新ED的部分.

这是因为,与传统的一样:nth-child(),它只匹配共享同一父节点的一组兄弟节点中的元素.旧名称意味着文档范围内的匹配,即作者希望以下内容匹配,但WD从未说过:

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

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

随着我们说话,Selectors 4规范的这些重大变化仍在进行中,我不希望任何新功能很快就能实现.


tom*_*989 6

CSS4选择器目前没有太多浏览器支持,请参见此处.

你可以使用nth-of-type一个CSS3选择器,它有更多的浏览器支持(见这里):

p:nth-of-type(even) {text-decoration: underline;}
Run Code Online (Sandbox Code Playgroud)

DEMO

  • 我认为混淆源于小提琴中的代码与问题中提供的代码不匹配的事实.在小提琴中,给出的选择符是`:nth-​​match(偶数为p)`,它确实在功能上等同于`p:nth-​​of-type(偶数)`.但是,在这个问题中,选择器是`:nth-​​match(偶数为p,h3)`,它不是*等价的.考虑一个按以下顺序生成子节点的div:`p + h3 + p + h3` - 选择器`:nth-​​match(偶数为p,h3)`只匹配两个h3元素,但都不匹配p元素. (2认同)