jQuery 悬停导致 div 闪烁
jQuerys' hover causes div to flicker
我正在开发一个 'portfolio',它可以显示不同事物的图片。当 end-user 悬停在其中一张图片上时,我希望 'caption' 在图像上淡入。当他们停止将鼠标悬停在图片上时,标题就会淡出。我试图做的是添加以下 HTML:
<div class="col-md-3">
<img src="assets/img/port1.jpg" class="porthome">
<div class="cap">
<h1>Compulite</h1>
<p> Lorem Ipsum </p>
</div>
</div>
这是'.cap' class:
.cap {
background: rgba(58, 197, 167, 0.8);
height: 262px;
width: 262px;
position: relative;
top: -285px;
left: 3px;
display: none;
}
所以上限 class 没有显示,悬停时,我希望它淡入:
$(".porthome").hover(function() {
$(this).next(".cap").fadeIn('slow');
}, function() {
$(this).next(".cap").fadeOut("slow");
});
现在的问题是:当我将鼠标悬停在其中一张图片上时,帽子淡入、淡出、淡入,直到我悬停出来。
这怎么可能?是 jQuery 错误吗?我搞砸了吗?
谢谢。
这种闪烁背后的原因是 'hover' 状态结束,因为您在它前面创建了一个元素。现在您将鼠标悬停在 .cap
元素上。
要解决这个问题,您可以使用父 div 的 'hover' 状态。由于这是父元素,因此如果光标位于任一子元素上方,您也将悬停它。
所以你的 HTML 看起来像这样
<div class="col-md-3 cap-parent">
<img src="assets/img/port1.jpg" class="porthome">
<div class="cap">
<h1>Compulite</h1>
<p> Lorem Ipsum </p>
</div>
</div>
JS:
$(".cap-parent").hover(function() {
$(this).children().next(".cap").fadeIn('slow');
}, function() {
$(this).children().next(".cap").fadeOut("slow");
});
示例:http://jsfiddle.net/6phcq6vj/
注意:该示例效果不佳,因为此 div 是全角。它应该在 bootstrap 页面的上下文中工作得更好。
我正在开发一个 'portfolio',它可以显示不同事物的图片。当 end-user 悬停在其中一张图片上时,我希望 'caption' 在图像上淡入。当他们停止将鼠标悬停在图片上时,标题就会淡出。我试图做的是添加以下 HTML:
<div class="col-md-3">
<img src="assets/img/port1.jpg" class="porthome">
<div class="cap">
<h1>Compulite</h1>
<p> Lorem Ipsum </p>
</div>
</div>
这是'.cap' class:
.cap {
background: rgba(58, 197, 167, 0.8);
height: 262px;
width: 262px;
position: relative;
top: -285px;
left: 3px;
display: none;
}
所以上限 class 没有显示,悬停时,我希望它淡入:
$(".porthome").hover(function() {
$(this).next(".cap").fadeIn('slow');
}, function() {
$(this).next(".cap").fadeOut("slow");
});
现在的问题是:当我将鼠标悬停在其中一张图片上时,帽子淡入、淡出、淡入,直到我悬停出来。
这怎么可能?是 jQuery 错误吗?我搞砸了吗?
谢谢。
这种闪烁背后的原因是 'hover' 状态结束,因为您在它前面创建了一个元素。现在您将鼠标悬停在 .cap
元素上。
要解决这个问题,您可以使用父 div 的 'hover' 状态。由于这是父元素,因此如果光标位于任一子元素上方,您也将悬停它。
所以你的 HTML 看起来像这样
<div class="col-md-3 cap-parent">
<img src="assets/img/port1.jpg" class="porthome">
<div class="cap">
<h1>Compulite</h1>
<p> Lorem Ipsum </p>
</div>
</div>
JS:
$(".cap-parent").hover(function() {
$(this).children().next(".cap").fadeIn('slow');
}, function() {
$(this).children().next(".cap").fadeOut("slow");
});
示例:http://jsfiddle.net/6phcq6vj/
注意:该示例效果不佳,因为此 div 是全角。它应该在 bootstrap 页面的上下文中工作得更好。