2010-11-29 7 views
2

ちょっとしたスタイリングがありますが、jsなしで普通のCSSを使ってやる方法がわかりません。CSS:カスケード表示:ホバー?

私のHTMLは、このようなものです:私がdiv要素があっても、ホバーされるたびに、著者とタイトルの両方がオレンジ色になりたい

 
    div.book span.title { color: black; } 
    div.book span.author { color: gray; } 
    div.book:hover { color: orange; } 

 
    <div class="book"> 
     <span class="title">Snow Crash</span> 
     <span class="author">Neal Stephenson</span> 
    </div> 

そして、私のCSSは、このようなものです私はそれらを通常は異なる色に設定しました。スパンは、自分の色が設定されているのでdivのcolorプロパティを継承しません。スパンの上にマウスを置かないと、スパンのホバーはアクティブになりません。 JavaScriptを使用せずにこれを行うことはできますか?

+1

はない 'div.book:hover span.title {色んオレンジ。 } '仕事? divがその下に配置されていると確信していますか? –

+0

@マーク、あなたは完全に正しいです。div.book:hover span {color:orange; }うまくいく、私は厚くなっていた。どうもありがとう! – Zach

+0

本当に必要な場合を除いて、 'div'を' div.class'に指定しないでください。それはCSSの特異性に盛り上がりを与えます。場合によっては( 'span.title'と' div.title'のような問題がある場合)意味があります。 – zzzzBov

答えて

4
div.book span.title { color: black; } 
div.book span.author { color: gray; } 
div.book:hover, div.book:hover span.title, div.book:hover span.author 
{ 
    color: orange; 
} 
+0

div.book:hover、div.book:hover span.title、div.book:hover span.author { 色:オレンジ; } は次のように書き直すことができます。div.book:hover span.title、div.book:hover span.author {color:orange; }より簡潔にするために。最初のdiv.book:hoverは不要です。 – Metagrapher

+0

おそらく、 'div.book'に他のテキストがある場合はどうなりますか?あなたは正しいのですが、 – hunter

+0

あなたは正しいです、あなたがそれを取り出した場合、ホバー上のオレンジとしてdivの他のテキストをスタイルしません。私は好きです:私の最初の考えよりも、div自身を上に置いてください。そうすれば、それは適切に変化します。いいですよ。 – Metagrapher

1

ルールdiv.book:hoverは、div.book span.titlediv.book span.authorを上書きしません。これは、後者のルールが前者よりも具体的であるためです。あなたはいずれかを実行する必要があります。

div.book span.title { color: black; } 
div.book span.author { color: gray; } 
div.book span.author:hover, div.book span.title:hover { color: orange; } 

か:

div.book span.title { color: black; } 
div.book span.author { color: gray; } 
div.book:hover { color: orange !important; } 

それは絶対に必要でない限り、私は一般的に!importantの使用に対してお勧めします。

さらに、私はこれがCSS3であり、現代のブラウザのバージョンでのみ実装されていると警告したいと思います。

EDIT: これは第3の選択肢である:

div.book:hover span.title, div.book:hover span.author { color: orange; } 
関連する問題