我相信这是因为a:hover
比a:link
.
如果原始a:hover
字体大小未指定,它将继承自a:link
. 但既然有a:hover
规范,a.myclass:hover
宁可取这个值,也不要更“通用” a.myclass:link
。
我在某处读过,将a
伪类视为“爱恨”::link
, :visited
, :hover
, :active
, 比前一个更具体。如果你为a
or定义了一些东西:link
,它应该被以下所有的伪类继承。但是,该值可以被覆盖,并且伪类的特殊性比定义样式的顺序或附加到链接的其他“真实”类更重要。
它在 IE6 中工作方式不同的原因是 IE6 做错了,这不足为奇。
解析的差异(可能是向后的):
a:hover { font-size: 8pt }
a.myclass:link { font-size: 14px }
a.myclass:hover { }
应该如何:
每个:hover
,不管.class
,是 8pt。
IE6是如何理解的:
:hover
与 不在同一类.myclass:hover
。由于没有为 指定大小.myclass:hover
,让我们从同一类中下一个更高可用的伪类继承,即.myclass:link
. 这使得.myclass:hover
14px。
估计的查找优先级:
Others IE6
a a
a.class a:link
a:link a:hover
a.class:link a.class
a:hover a.class:link
a.class:hover a.class:hover <-- Lookup starts here, goes up.