web-dev-qa-db-ja.com

CSS:他の要素にカーソルを合わせますか?

短い質問:なぜbackground-color of .bホバーしても変わらない? .a

[〜#〜] css [〜#〜]

.a {
    color: red;
}

.b {
    color: orange;
}

.a:hover .b {
    background-color: blue;
}

[〜#〜] html [〜#〜]

<div id="wrap">
    <div class="a">AAAA</div>
    <div class ="b">BBBB</div>
</div>

http://jsfiddle.net/2NEgt/

10
Sven

.a:hover + .bの代わりに.a:hover .bが必要です

.a:hover .bは次のような構造で機能します

<div class="a">AAAA
  <div class ="b">BBBB</div>
</div>

ある時点で.aと.bの間にいくつかの要素が必要になる場合は、.a:hover ~ .bを使用する必要があります。これは、その後に続く.aのすべての兄弟に対して機能します、次のものだけではありません。

デモ http://jsfiddle.net/thebabydino/EajKf/

46
Ana

a:hover + bのようなことはできませんか? http://meyerweb.com/eric/articles/webrev/200007a.html を参照してください

6
Josh

+セレクターを使用できます

.a:hover + .b {
    background-color: blue;
}

兄弟要素にcssを適用する、または

.a:hover > .b {
    background-color: blue;
}

ネストされたクラスの場合。

6
Stano

.bは.aの子ではないため、セレクターは何も検出しません。 javascriptを使用して、そこでやりたいことを実行します。

3
Tallboy

できることは2つあります。

HTMLを変更して、.b.aの子にします。

<div id="wrap">
    <div class="a">AAAA
       <div class ="b">BBBB</div>        
    </div>
</div>

OR

隣接するセレクターを使用するようにCSSを変更します

.a:hover + .b {
    background-color: blue;
}
2
Jrod

jsは必要ありません http://jsfiddle.net/2NEgt/3/

1
Nicholas King

別の要素でイベントが発生した場合は、兄弟のスタイルを変更しないでください。それはCSSの文脈から外れています。

これを実現するには、JavaScriptを使用します。次に例を示します。

var wrap = document.getElementById("wrap");
var aDiv = wrap.getElementsByClassName("a")[0];
var bDiv = wrap.getElementsByClassName("b")[0];
aDiv.onmouseover = function() {
    bDiv.style.backgroundColor = "red";
};
aDiv.onmouseout = function() {
    bDiv.style.backgroundColor = "white";
};
0
Madara Uchiha

Jqueryは優れた簡単なソリューションです。

html:

<div class="a">AAA</div>
<div class="b">BBB</div>

script:必要に応じて、このスクリプトをhtmlに挿入します。それで全部です。

<script>
      $(".a").mouseover(function(){
        $(".b").css("color", "blue"); 
      });
      $(".a").mouseleave(function(){
        $(".b").css("color", "red");
      });
</script>

この例を理解してみてください。
htmlコード

<p>Hover over 1 and 3 gets styled.</p>
<div id="one" class="box">1</div>
<div id="two" class="box">2</div>
<div id="three" class="box">3</div>


<!--css-->
#one:hover ~ #three{
background-color: black;
color: white;
}
.box {
cursor: pointer;
display: inline-block;
height: 30px;
line-height: 30px;
margin: 5px;
outline: 1px solid black;
text-align: center;
width: 30px;
}

ボックス3よりもボックス1にカーソルを合わせると、黒色になります。

0
zdifahk