2011-07-11 4 views
1
.menu a:hover {color: red;} 
.tab:hover {color:blue;} 

<div class="menu"> 
    <a class="tab">Link</a> // will be red 
</div> 

a.tab:hoverを使用して.menu a:hoverを無効にする理由を教えてください。なぜちょうど.tab:hoverは機能しませんか?CSSセレクタに関する質問

答えて

5

.menu a:hover.tab:hoverよりmore specificではありませんので、カスケード順ダウン低く表示されます。

a.tab:hover.menu a:hoverと同じように、これらの2つのルールセットのルールはソースの順序で適用されます。

+0

正確に両方が正常に動作します –

-2

.tab、この場合aには、それが影響しているオブジェクトに従わなければならず、疑似クラス(またはアクション)が続かなければなりませんクラスあなたはそれが:hover

したがって、この場合には、によって活性化させたい、a.tab:hover.tab:hoverしばらくの作品は

+0

[the spec](http://www.w3.org/TR/CSS21/selector.html)から: 'ユニバーサルセレクターがシンプルセレクターの唯一のコンポーネントでない場合、「*」は省略される場合があります。 – Quentin

2

ここでの答えは、「特異性」と呼ばれるものになります。 CSS3セレクタの仕様のセクションCalculating a selector's specificity(CSS2.1仕様にも同様のものがあります)をご覧ください。

ベース10システムを考えてみましょう(どんなレベルでも10を超えないので安全です).menu a:hoverは021の特異性で終わりますが、.tab:hoverは020の特異性を得ます。ルールが両方で定義されている場合、.menu a:hoverが勝つでしょう。 を使用していた場合、その特異性は021となり、.menu a:hoverに等しくなり、指定された順番になります。