我能找到的关于此的最新信息是W3C 选择器 4 级编辑草稿 http://dev.w3.org/csswg/selectors-4/,但是,据我所知,它不再提及父选择器。
我知道有一个谷歌对此进行的调查 https://docs.google.com/forms/d/1x0eXPBj1GN8Zau-7k9J_JGhoM6uGEqlJBkBBDFswT2w/closedform,但现在已经结束了。
父选择器发生了什么?它是否会被引入,或者是否已被删除?
调查最终导致主题选择器(所谓的“家长选择器”的正确名称)被更通用的选择器所取代。:has()
伪类,已记录here http://dev.w3.org/csswg/selectors-4/#relational(有一个有趣的主播名字,#relational
,我想知道这是否会坚持下去)。
只有当此功能的规范更加稳定时,实现可能才会到来。目前,随着诸如用伪类完全取代主题选择器这样的颠覆性变化,我并不指望它会很快发生。也就是说,很可能:has()
伪类将会保留,但由于其本质,它是否可以在 CSS 中实现还有待观察。看同一草案的这一部分 http://dev.w3.org/csswg/selectors-4/#profiles了解实施概况。
原因:has()
更通用的是因为,对于主题选择器,在任何草案中都从未明确说明单个复杂选择器是否可以具有多个主题选择器(因为单个复杂选择器只能有一个主题)和/或如果功能伪- 类如:matches()
接受了主题选择器。但是因为伪类是一个简单的选择器,所以它适合现有的选择器语法,并且您可以可靠地假设:has()
任何接受伪类的地方都会被接受。
举个例子,这使得如下的选择器在理论上是完全可能的:
/*
* Select any p
* that is a sibling of a ul
* that has more than one li child.
*/
ul:has(> li:nth-of-type(2)) ~ p, /* p follows ul */
p:has(~ ul:has(> li:nth-of-type(2))) /* p precedes ul */
然而,使用主题选择器,这只有在以下情况下才可能实现::matches()
接受主题选择器,该选择器从未在规范中直接说明:
ul:matches(! > li:nth-of-type(2)) ~ p, /* p follows ul */
!p ~ ul:matches(! > li:nth-of-type(2)) /* p precedes ul */
您还可以在这里看到为什么我不喜欢任何一种形式的选择器的名称“父选择器”——它可用于这么多.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)