【问题标题】:jquery sliding/timing issuejquery滑动/计时问题
【发布时间】:2012-11-27 17:31:36
【问题描述】:

所以我设置了一个小的 jquery 动画,其中用户将鼠标悬停在容器上一段时间,这会导致容器拆分,然后显示里面的信息。

我不希望鼠标一进入容器就开始动画,所以我在动画上放了一个delay()。现在动画不会立即开始。

但是,有一个问题。如果您快速将鼠标悬停在该区域上,动画就会开始并开始非常快。

这里有一个 jsfiddle 来说明...... http://jsfiddle.net/Rh96d/

除非用户将鼠标悬停在蓝色区域上一段时间,否则我不希望播放动画。在此示例中,即使用户将鼠标从该区域移开,动画也会播放,这是不应该发生的。

对不起,如果我不够清楚。我不知道如何让它工作......

【问题讨论】:

标签: jquery css animation


【解决方案1】:

我是jQuery hoverIntent plugin 的忠实粉丝。

这是fiddle implementation

包含插件后,您的脚本将更改为

function hoverIn () {
    $('#one').stop().animate({marginTop:'-250px'});
    $('#two').stop().animate({marginTop:'500px'});
}
function hoverOut () {
    $('#one').stop().animate({marginTop:'0px'});
    $('#two').stop().animate({marginTop:'0px'});
}
var config = {
    over: hoverIn,
    timeout: 0,
    out: hoverOut,
    interval: 600
};

$('#main').hoverIntent(config);    

【讨论】:

  • 正确。我尝试这样做的原因是,当用户只是浏览而不打算触发动画时,内容不会在整个页面上设置动画。
  • 一开始我不小心链接到了错误的小提琴,但我已经修复了它。这是否实现了您的目标?
  • 是的,这就是我想要做的。让我尝试实现它。
  • 只是一个简单的问题,jsfiddle 是如何知道您正在使用该插件的?我没有看到它在那里的任何地方导入...
  • 它在左侧导航的Manage Resources 部分
【解决方案2】:

解决方案示例:http://jsfiddle.net/Rh96d/8/

在这里,您正在设置一个函数,在 500 毫秒后触发。一旦鼠标离开该区域,关闭动画代码就会运行。

JavaScript

var myTimeout;
$('#main').mouseenter(function() {
    myTimeout = setTimeout(function() {
        $('#one').stop().delay(600).animate({marginTop:'-250px'});
        $('#two').stop().delay(600).animate({marginTop:'500px'});
        },function () {
    }, 5500);
}).mouseleave(function() {
    clearTimeout(myTimeout);
    $('#one').stop().animate({marginTop:'0px'});
    $('#two').stop().animate({marginTop:'0px'});
});

$('#main').mouseleave(function() {
    clearTimeout(myTimeout);
    $('#one').stop().animate({marginTop:'0px'});
    $('#two').stop().animate({marginTop:'0px'});
});​

【讨论】:

  • 将鼠标快速移出该区域仍然会导致它打开和关闭而无需等待超时...
  • 是的,这是有效的。我打算使用 HoverIntent 插件,但没有它也可以工作。
  • 很高兴听到。应该可以清理了吧。我现在正在努力。
  • 嗯,这里会不会有 jsfiddle 自动更正的东西?在我的网站中实施时,它破坏了所有的 jquery...
猜你喜欢
  • 1970-01-01
  • 2011-07-27
  • 2011-09-15
  • 2011-07-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-04
相关资源
最近更新 更多