【问题标题】:Is a dynamic pseudo-class evaluated before the rest of the selector?是否在选择器的其余部分之前评估动态伪类?
【发布时间】:2015-05-14 21:22:42
【问题描述】:

据我所知,CSS 选择器是从右到左进行评估的,因此body div * 会选择每个项目,而不是查看具有 div 类型的父项和具有 body 类型的父项的那些项。我不确定的是如何在这个链中评估动态伪类。

如果我有一个像 div *:hover 这样的选择器,评估会如何?

  1. :hover => * => div
  2. *=> :hover => div
  3. 另一个我没想到的解决方案

【问题讨论】:

  • 可能,这取决于实现。
  • 评估实际上看起来更像*:hover => 祖先div 的典型实现。在单个复合选择器中没有顺序的概念,除了简单选择器最容易匹配的顺序,这取决于 1) 使用哪些简单选择器,以及 2) 实现。查看这些答案:[1][2] 请注意,这个问题是关于动态伪类的,这使它更有趣,即使最终它仍然涉及实现细节。

标签: css performance css-selectors pseudo-class


【解决方案1】:

很遗憾,

* => :hover => div

首先评估通用选择器,这意味着它会查看 DOM 中的 每个 元素,然后检查它是否处于 :hover 状态。最后,对于任何匹配的元素,它会检查父 div

【讨论】:

  • 你有关于这个话题的资料/文章吗?
猜你喜欢
  • 2014-12-06
  • 1970-01-01
  • 2012-07-27
  • 2021-01-17
  • 1970-01-01
  • 2020-08-05
  • 2022-10-13
  • 2017-12-29
相关资源
最近更新 更多