CSS 伪类顺序

对于伪类顺序,有一个口诀是 love-hate,代表着伪类的顺序是:linkvisitedfocushoveractive
但是,是否伪类的顺序只能如此呢?为什么是这个顺序呢?

CSS 层叠中有一条法则十分重要,就是后面覆盖前面,所以伪类的顺序是需要精心考虑的。
  • link 和 visited 必须在最前面,且没有先后顺序,否则 link 或 visited 的效果将被覆盖。
   link 和 visited 称为静态伪类,只能应用于超链接。
  • focus、hoveractive 这三个伪类必须是 focushoveractive 的顺序,因为在 focus 状态下,也需要触发 hover 和 active,而要触发 active 一定要先触发 hover,所以 active 要放在 hover 后面。
   focus、hover、active 称为动态伪类,可应用于任何元素。

但 IE7浏览器不支持 :focus:hover 和 :active;在 IE6浏览器下只支持给 设置。

所以,最终的顺序只有两种 :linkvisitedfocushoveractive 或 visitedlinkfocushoveractive。