为什么“a:hover 必须出现在 a:link 和 a:visited(w3school)之后”?

why “a:hover MUST come after a:link and a:visited(w3school)”?

我在"w3schools"学习CSS,在"link"的章节里,他们说:

"设置几个link状态的样式时,有一些顺序规则:

a:hover 必须在 a:link 和 a:visited 之后 a:active 必须在 a:hover 之后

我想知道为什么正确的顺序是 L.V.H.A,而不是 L.H.V.A 或其他顺序。

伪class必须按特定顺序声明。

助记符 LoVe HAte 对于记住正确的词总是有用的顺序:

:link
:visited
:hover
:active

每个伪class对应一个事件,该事件在时间轴中只能发生在比之前发生的事件更晚的时间。

也就是说:

  1. A link 在被访问之前未被访问。

  2. A link 在悬停之前被访问。

  3. 一个 link 在被激活之前悬停在上面。

主要是因为后面的规则是在CSS的文档中找到的前面的规则按顺序执行的,也就是说后面的行为会在前面所有匹配的规则执行完之后执行。因此,它们的顺序确实很重要,以避免重叠会影响彼此的行为。

如果 :link 放在 :visited 之后,:visited 的某些行为将被重叠,例如它的颜色可能显示为正常 link 尽管访问.