jQuery图像在悬停时闪烁
jQuery Image Flicker on Hover
我在Vine视频的顶部有一张图片。我希望图片在鼠标悬停时消失并在鼠标退出时重新出现。换句话说,只有当鼠标悬停在图片上时,Vine 才可见。
使用当前代码,我让图像闪烁。我认为问题可能出在图片背后的藤蔓上。我试过玩z索引,但没有雪茄。
这是我的代码(我使用 span 来包装 #picture)
<div class = "vine-two media">
<span><img id = "picture" class = "on-top" src = "img/kanye.jpg"></span>
<iframe id = "video" class="vine-embed adj-size"src="https://vine.co/v/bYDuAmjeH9r/embed/simple"frameborder="0"></iframe><script async src="//platform.vine.co/static/scripts/embed.js" charset="utf-8"></script>
<script>
$(document).ready(function() {
$('span').mouseover(function () {
$('#picture').hide();
}).mouseout(function () {
$('#picture').show();
});
});
</script>
</div>
.CSS:
.on-top {
position: absolute;
z-index: 1000;
width: 240px;
height: 240px;
}
.adj-size{
width: 240px;
height: 240px;
}
您需要使用 mouseenter 和 mouseleave。 http://api.jquery.com/mouseenter/点击该链接,您可以在示例中看到差异。鼠标悬停会触发多个事件,这可能是闪烁的来源。
更新:
看到代码,我会将 iframe 设置为隐藏,直到它准备好播放。闪存会导致覆盖问题。YouTube解决方案是 http://www.youtube.com/embed/vRH3Kq5qDw4?wmode=opaque 将闪光灯置于wmode=opaque。藤蔓也可能有一些东西。
图像周围有 span-tag 吗?如果是,我可以想象您将鼠标悬停在跨度上,然后图像消失并且跨度变小(0x0 像素),鼠标无法再悬停在跨度上。
也许尝试这样的事情:
<div class="completely_hovering_over_the_video" style="width:video_width;height:video_height" >
<img id="picture" src="bla.jpg">
</div>
使用此代码,我试图向您展示一个完全覆盖视频并具有固定宽度和固定高度的 DIV。即使 IMG 变小或不可见,此 DIV 也不会改变其尺寸。如果将鼠标悬停在 DIV 上,请隐藏 IMG,反之亦然。
当它消失时,图像将注册鼠标退出事件,这将使图像再次显示。
一种可能的解决方案是尝试$('#picture').css('visibility','hidden');
而不是使用hide()
,并$('#picture').css('visibility','visible');
显示它。我认为这将防止在图像隐藏时触发mouseOut,因为图像仍然存在,只是不可见。
span
可以是页面上的任何span
,因此这是一种糟糕的做事方式,
您需要更具体地使用选择器:
$(function() { // DOM ready shorthand
$('.picture').hover(function () {
$(this).fadeToggle(); // make video underneath visible
});
// other DOM ready stuff here
});
或者按照这个实现示例:演示
<div class="video">
<!-- video here -->
<img src="image.jpg">
</div>
.video{
position:relative;
width:400px;
height:280px;
}
.video img{
position:absolute;
top:0;
left:0;
}
$('.video').hover(function(){
$(this).find('img').fadeToggle();
});
要解释基本技巧,请将悬停事件指向公共video
并img
父级,在本例中为 DIV . video
。
这也将起作用:
$('.video').hover(function(){
$("img", this).fadeToggle();
});
此外,如果您想防止歇斯底里的用户看到动画堆积,您可以添加.stop()
方法,例如:
$('.video').hover(function(){
$("img", this).stop().fadeToggle();
});
同样,使用我提供的 HTML 可以只使用 CSS 完成所有工作:http://jsbin.com/amiBOKu/4/edit
.video:hover > img{
display:none;
}
我建议进行一些重组,并使用hover
而不是mouseover
和mouseout
。您看到闪烁的原因是mouseout
一旦图像褪色就会触发,而悬停只会在鼠标进入时触发一次,在鼠标输出时触发一次。
例:
.HTML:
<div class = "vine-two media">
<img class = "on-top picture" src = "http://data2.whicdn.com/images/27599232/kanye-west-announces-new-design-company-called-donda-1_large.jpg">
<iframe id = "video" class="vine-embed adj-size"src="https://vine.co/v/bYDuAmjeH9r/embed/simple"frameborder="0"></iframe><script async src="//platform.vine.co/static/scripts/embed.js" charset="utf-8"></script>
</div>
.JS:
$('.media').hover(function() {
// mouse enter
$('.picture', this).hide();
}, function() {
// mouse leave
$('.picture', this).show();
});
小提琴
- 悬停时setInterval中的图像闪烁
- 悬停时损坏的CSS菜单 - 闪烁效果
- jQuery图像在悬停时闪烁
- Javascript拉斐尔奇怪的闪烁发生在我鼠标悬停的第三次
- 当我将鼠标悬停在iframe上时,DIV会闪烁
- 为什么jquery是悬停的,在下拉菜单上滑动功能闪烁
- 更改元素父元素的背景颜色时停止在
上闪烁鼠标悬停?jQuery/JS. - 当鼠标悬停在其上时,Div 会闪烁
- jQuery悬停气泡导致循环闪烁效果
- 在元素悬停时闪烁,同时尝试在同一事件上缩小其大小
- Bootstrap 3选项卡,活动选项卡仅在firefox中悬停时闪烁
- 在元素中使用mouseover和mouseout会使悬停持续闪烁
- jQuery悬停动画期间的最后一次潜水闪烁
- 谷歌地图-标记在鼠标悬停前闪烁
- 在悬停上添加边框会导致闪烁
- 悬停效果产生闪烁
- 鼠标悬停状态闪烁
- Jquery改变背景颜色悬停,不断闪烁
- jQuery覆盖悬停闪烁问题
- Javascript鼠标悬停元素闪烁;未捕获的类型错误