jQueryを使って簡単にアニメーションを作成しようとしていますが、Firefoxでは絶対にうまく動作しますが、ChromeとEdgeではちらつきがあります。ここにはjsfiddle、コードはクロムとエッジのjQueryフリッカーで要素を非表示にして表示
HTML
<div id="boxes-wrapper">
<div class="box"></div><div class="box"></div><div class="box"></div>
</div>
CSS
.box {
width: 150px;
height: 150px;
display: inline-block;
margin: 0;
padding: 0;
vertical-align: top;
}
.box:first-child {
background: pink;
}
.box:nth-child(2) {
background: skyblue;
}
.box:nth-child(3) {
background: gold;
}
.box.hover {
position: relative;
z-index: 20;
}
html, body {
position: relative;
width: 100%;
height: 100%;
}
#shadow {
display: none;
position: absolute;
left: 0;
top: 0;
background: black;
opacity: 0.7;
z-index: 10;
width: 100%;
height: 100%;
}
JavaScriptの
$('.box').hover(function() {
$(this).addClass('hover');
$('#shadow').show();
}, function() {
$(this).removeClass('hover');
$('#shadow').hide();
});
私はSOにいくつかの質問を掘ってきたが、それらのどれもちらつきを取り除くためにどのように答えていません。
ない理由あなたの影のために別のホバリングがあるので、ボックスラッパーのホバーに表示されます – Pete
cuzどの子供がホバーをトリガーしたかを知る必要があるので、クラスを追加する必要があります –
実際にあなたのコードを見ていると、あなたはオーバーレイ(これはフリッカーを引き起こしているものです)を隠す、方法はありませんo別のボックスを置いて、覆われていないボックスがオーバーレイの背後にある – Pete