2017-10-12 5 views
0

ドーム準備ができたら、マウスが動いているかどうかを検出して、親divにクラス "has-hover"を付けます。CSS:動的に追加されたクラスを持つ要素でホバーが機能しない

内部には2つのラベルがあります。最初のものは、親divの「has-hover」クラスにホバー状態がアタッチされています。これは達成したい機能です。

2番目のラベルには、ホバー状態が直接付いています。

なぜホバー状態は2番目のラベルで機能しますが、最初のラベルでは機能しませんか?

ありがとうございます! CSSで

function watchForHover() { 
 
\t var div = $(".div"); 
 
    var hasHoverClass = false; 
 

 
\t function enableHover() { 
 
    \t if (hasHoverClass) return; 
 
\t \t div.addClass("has-hover"); 
 
\t \t hasHoverClass = true; 
 
\t }; 
 
    
 
\t document.addEventListener("mousemove", enableHover, true); 
 
}; 
 

 
watchForHover();
label { 
 
    width: 70px; 
 
    height: 70px; 
 
    margin: 5px; 
 
    color: white; 
 
    background-color: red; 
 
    transition: all 0.3s; 
 
    display: block; 
 
} 
 
.has-hover { 
 
    label:first-child:hover { 
 
    opacity: 0.5; 
 
    } 
 
} 
 
label:nth-child(2):hover { 
 
    opacity: 0.5; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="div"> 
 
<label>label 1</label> 
 
<label>label 2</label> 
 
</div>

+0

私は、それはあなたが以下にあなたのセレクタを簡素化することができように誤解見えてる場合を除き:hover'、および 'オーバーホバリング時に、あなたのスタイルルールが適用されます:.has-ホバーラベル'親 '.div'がクラス' .has-hover'を持っている限り、ラベル ' – UncaughtTypeError

+0

ありがとう@UncaughtTypeError。私は、例のために子供の擬似セレクタを使用しました。私がそれらを取り除いて、ただそこに残すなら、どちらかといえば働いていないでしょう...それについての説明はありますか? – metaskopia

+0

私はちょうど '.has-hoverを試しました ラベル:ホバー{ 不透明度:.5; } 'をブラウザのIDEでコードスニペットの例を使用して、期待通りに機能しました。あるいは何かを達成しようとしていますか? – UncaughtTypeError

答えて

0

ヨンできないネストルール。あなたがそれをやめないなら、SASSのようなプリプロセッサを使う必要があります。

function watchForHover() { 
 
\t var div = $(".div"); 
 
    var hasHoverClass = false; 
 

 
\t function enableHover() { 
 
    \t if (hasHoverClass) return; 
 
\t \t div.addClass("has-hover"); 
 
\t \t hasHoverClass = true; 
 
\t }; 
 
    
 
\t document.addEventListener("mousemove", enableHover, true); 
 
}; 
 

 
watchForHover();
label { 
 
    width: 70px; 
 
    height: 70px; 
 
    margin: 5px; 
 
    color: white; 
 
    background-color: red; 
 
    transition: all 0.3s; 
 
    display: block; 
 
} 
 
.has-hover label:first-child:hover { 
 
    opacity: 0.5; 
 
    } 
 
label:nth-child(2):hover { 
 
    opacity: 0.5; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="div"> 
 
<label>label 1</label> 
 
<label>label 2</label> 
 
</div>

+0

私のせいです。私はSASSを使っていましたが、そのことを忘れてしまいました。ありがとう! – metaskopia

関連する問題