次のコードを検討してください。
HTML:
<div class='a'></div>
<div class='b'></div>
CSS:
body {
position: relative;
}
.a {
position: absolute;
left: 100px;
top: 100px;
width: 100px;
height: 100px;
background: #777;
}
.b {
position: absolute;
display: none;
background: red;
}
JavaScript:
$(function() {
$('.a').live('mouseover mouseout', function(e) {
switch (e.type) {
case 'mouseover': {
$('.b').offset({'left': $(this).offset().left,
'top': $(this).offset().top})
.width($(this).outerWidth())
.height($(this).outerHeight())
.show();
break;
}
case 'mouseout': {
$('.b').hide();
break;
}
}
});
});
ここでわかる.b
ように、 が表示されるとmouseout
自動的にちらつきが発生するため、何らかのちらつきが発生します。この問題をどのように解決しますか?
望ましい動作は次.a
のとおりです。常に表示する必要があります。.b
.a
.a
.b
.a
の位置と寸法.a
は一定ではありません (その場で計算する必要があります)。