2012-09-14 18 views
7

同じDOMレベルで複数のdivがあるとします。私が1つ上を移動すると、他のすべての人がスタイルを変える(つまり、不透明度を下げるか背景を変える)ようにしたい。1つの要素がホバリングされたときの他のすべての要素のスタイルを変更します

+または~セレクタを使用することはできません。これは、直接隣接する兄弟だけでなく次の兄弟だけでなく、すべての兄弟を選択する必要があるためです。基本的に私が探しているのは、 "すべての兄弟ですが、この1つ"のセレクタです。これは存在しますか?これを達成する方法はありますかJavaScriptなし

答えて

9

トリックは、親要素にホバー擬似セレクタを配置し、それに応じて子をスタイルすることです。ここで

.parent:hover .child { 
    opacity: .5; 
} 
.parent .child:hover { 
    opacity: 1; 
} 

はデモである:ここで私が参照してるものです http://jsfiddle.net/joshnh/FJAYk/

+0

うわー、それほど些細なことですが、私はそれを考えることができないと恥じています。ありがとう。 – Bobe

+1

しかし、待って、キャッチがあります。私が言及したこれらのdivの間には空きスペースがたくさんありますが、親divにカーソルを置くだけで、それらを調光させたくありません。 – Bobe

+1

それはちょうどキャッチです。 JavaScriptを使用したくない場合は、JavaScriptを使用します。 – joshnh

1

上記の例では非常に良いが、そこのdivの間に余裕があり、あなたがトリガする効果をしたくない場合は空のスペースにカーソルを置くと、javascriptの必要はありません。

ここでは簡単な回避策です:

だけで(それがデフォルトで表示されている必要があり).childfloat:leftを追加し、.parentoverflow:visibleを持っていることを確認してくださいが。

これにより、.parentは0pxになります(したがって、空の領域は効果を引き起こしません)。.childをホバリングすると、:hover疑似クラスが発生します。

関連する問題