a:hover
より具体的だからだと思いますa:link
。
元のa:hover
font-size が指定されていない場合は、 から継承され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
は 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.