Ich glaube es ist, weil a:hover
spezifischer als a:link
ist.
Wenn die ursprüngliche Schriftgröße a:hover
nicht angegeben wurde, würde sie von a:link
geerbt werden. Aber da es eine a:hover
Spezifikation gibt, nimmt a.myclass:hover
eher diesen Wert als der "allgemeinere" a.myclass:link
.
Ich habe irgendwo gelesen, der a
Pseudo-Klassen als „Liebe Hass“ zu denken: :link
, :visited
, :hover
, :active
, ein spezifischer als die vorherige. Wenn Sie etwas für a
oder :link
definieren, sollte es von allen folgenden Pseudoklassen geerbt werden. Dieser Wert kann jedoch außer Kraft gesetzt werden, und die Spezifität der Pseudoklasse ist wichtiger als die Reihenfolge, in der die Stile definiert sind oder welche anderen "echten" Klassen an den Link angehängt sind.
Der Grund, dass es in IE6 anders funktioniert, ist, dass IE6 es falsch macht, was nicht überraschen sollte.
Unterschiede beim Parsen (möglicherweise nach hinten):
a:hover { font-size: 8pt }
a.myclass:link { font-size: 14px }
a.myclass:hover { }
Wie es sein sollte:
Jeder :hover
, unabhängig von .class
, 8pt ist.
Wie IE6 versteht es:
:hover
ist nicht in der gleichen Klasse wie .myclass:hover
. Da für .myclass:hover
keine Größe angegeben ist, erben wir von der nächsthöheren verfügbaren Pseudoklasse in derselben Klasse, nämlich .myclass:link
. Das macht .myclass:hover
14px.
Geschätzte Lookup-Prioritäten:
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.
Es sollte Sie in Firebug zeigen, was es überschrieben ist (es wird irgendwo höher in der Style-Sektion sein) – Alconja
Ich nehme an, in IE6 zwingende es nicht, das ist ein Schmerz. – Schotime