我有一个默认的 a:hover 样式,如下所示:

a:hover { color: black; font-size: 8pt }

但是,当尝试应用诸如以下的类时:

a.myclass:link { font-size: 14px } 
a.myclass:hover { color: red }

如果没有 font-size,那么它会将 font-size 更改回 8pt。现在这似乎应该如何工作,但在 ie7、firefox、chrome 中却不会发生。(在IE6下有效)

更新: 在 firebug 中,它实际上显示 a:hover 上的字体大小已被覆盖,但我不知道。

有人有主意吗?

有帮助吗?

解决方案

我相信这是因为 a:hover 比更具体 a:link.

如果原来的 a:hover 未指定字体大小,它将继承自 a:link. 。但既然有一个 a:hover 规格, a.myclass:hover 宁愿采用这个值而不是更“一般” a.myclass:link.

我在某处读到想到 a 伪类为“爱恨”: :link, :visited, :hover, :active, ,比前一个更具体。如果你定义一些东西 a 或者 :link, ,它应该被以下所有伪类继承。不过,该值可以被覆盖,并且伪类的特殊性比定义样式的顺序或附加到链接的其他“真实”类更重要。

它在 IE6 中的工作方式不同的原因是 IE6 做错了,这不足为奇。

解析的差异(可能是向后的):

a:hover { font-size: 8pt }
a.myclass:link { font-size: 14px } 
a.myclass:hover { }

应该如何:

每一个 :hover, , 不管 .class, ,是 8 分。

IE6是如何理解的:

:hover 与以下不在同一个班级 .myclass:hover. 。由于没有指定尺寸 .myclass:hover, ,让我们继承同一个类中下一个更高的可用伪类,即 .myclass:link. 。这使得 .myclass:hover 14 像素。

估计的查找优先级:

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.

其他提示

那是因为的方式被应用的样式 如果你将扩展的类,你会得到:

a{ color:red; font-size:10pt;}
a:hover {font-size:8pt; color:black}
a.myclass{font-size:6pt;text-decoration:none;}
a.myclass:hover {color:red}

现在,如果我们扩大这个显示怎么回事:

a.myclass{font-size:6pt;text-decoration:none;**color:red**} /* got the color from a - we overrode the font size */
a.myclass:hover {color:red;text-decoration:none;font-size:8pt} /* we got the text-decoration from a.myclass - but a:hover overrides myclass so we got the 8pt from there */

这个效果其实是更加古怪,更复杂,如果你开始四处效果(边框/填充/保证金)和侧面唯一的混合所有(右边框,上边距;填充左)在这样的星座。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top