我在freakyleaf.co.uk/hoverfade/上有以下活动示例,在悬停在一个图块上时,图块背景图像在600毫秒(.tile_img)上形成1到0.25不透明度,然后文本从0到1不透明度过滤500ms(.overlay)。在鼠标移出时,会发生相反的情况。jQuery悬停鼠标悬停/鼠标退出计时
只要鼠标一旦鼠标悬停动画完成,这一切都可以正常工作。如果在鼠标悬停动画期间鼠标离开,平铺图像将淡出为完全不透明状态,但文本不会褪色,从而使其可见。
我有以下代码:
$(document).ready(function(){
$(".tile").hoverIntent(function() {
$(".tile_img", this).animate({"opacity": "0.25"}, 600,
function() { $(this).next(".overlay").animate({"opacity": "1"}, 500); }
);
},
function() {
$(".overlay", this).animate({"opacity": "0"}, 500,
function() { $(this).prev(".tile_img").animate({"opacity": "1"}, 600); }
);
});
});
和HTML:
<div class="wrapper">
<ul id="service_boxes">
<li id="sb_recording" class="tile" onClick="location.href='recording.php';" style="cursor: pointer;">
<h2><a href="recording.php">Recording</a></h2>
<div class="tile_img"></div>
<div class="overlay"><p>Vintage analogue warmth and cutting-edge digital technology working in perfect harmony - That's the SoundARC sound!</p></div>
</li>
</ul>
</div>
我明白,我也许应该使用.stop功能,但如此在一些地方已经尝试过,但只有到目前为止破碎的代码。
我甚至不确定我拥有的是实现我想要的最佳方式;我只是偶然的,因为我是一个完全的新手。
任何帮助将不胜感激。
非常感谢。
我认为一个解决方案可能涉及'setInterval',但不确定如何实现。我放弃了你的代码建议,它似乎打破了鼠标事件,即动画在中途停住了一半,即使当鼠标离开了平铺时... – 2012-01-15 12:53:25
对不起!我在代码中犯了一个错误。当你做.overlay动画时,你指的是这个,但我忘记了这将在setInterval的范围内。通过分配一个变量,比如self,并赋予它这个值,你可以在setInterval中使用它。代码在我的电脑上运行:) – jonepatr 2012-01-15 17:46:19
感谢您的快速回复...尝试了新代码,但仍然遇到问题,如果在鼠标悬停动画结束之前鼠标离开了tile,则“overlay”div不会褪色('.tile_img'不过)...任何你可以摆脱这一点的灯将非常感激! :) – 2012-01-15 18:48:43