同じDOMレベルにたくさんのdivがあるとしましょう。1つにカーソルを合わせると、他のすべてのスタイルを変更して(つまり、不透明度を下げたり、背景を変更したり)、カーソルを合わせたものは同じままにします。
+
またはセレクターを使用できません~
。これは、直接隣接する兄弟だけでなく、次の兄弟だけを選択するために必要なためです。基本的に私が探しているのは「これ以外のすべての兄弟」セレクターです。これは存在しますか?JavaScriptなしでこれを達成する方法はありますか?
秘訣は、ホバー疑似セレクターを親要素に配置し、それに応じて子のスタイルを設定することです。これが私が言及しているものです:
.parent:hover .child {
opacity: .5;
}
.parent .child:hover {
opacity: 1;
}
これがデモです:http://jsfiddle.net/joshnh/FJAYk/
上記の例は非常に優れていますが、divの間にマージンがあり、空のスペースにカーソルを合わせたときにエフェクトをトリガーしたくない場合は、javascriptは必要ありません。
簡単な回避策は次のとおりです。
に追加float:left
して.child
、それが含まれていることを確認し.parent
てoverflow:visible
ください(デフォルトで表示されているはずです)。
これを行うと、.parent
高さが0pxになります(したがって、空のスペースは効果をトリガーしません)が、カーソルを合わせると両方の疑似クラスがトリガーされ.child
ます:hover
。