Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery在鼠标停止时启动悬停动画_Javascript_Jquery_Html_Css - Fatal编程技术网

Javascript jQuery在鼠标停止时启动悬停动画

Javascript jQuery在鼠标停止时启动悬停动画,javascript,jquery,html,css,Javascript,Jquery,Html,Css,因此,我有一个滑动门样式的动画,现在当鼠标悬停在盒子上时,它就会触发(下面提供了我的示例)。当鼠标悬停在div上时,它不会立即启动,我实际上希望只有当鼠标停在div上时,才会出现悬停动画,就像在chromewebstore中,当鼠标停在一个应用程序容器上时一样(https://chrome.google.com/webstore/category/home) 我现在的例子 编辑:为了进一步澄清,此页面上会出现多个单元格 谢谢你能提供的任何帮助 我的建议是更改悬停事件。悬停时,获取鼠标坐标,然后

因此,我有一个滑动门样式的动画,现在当鼠标悬停在盒子上时,它就会触发(下面提供了我的示例)。当鼠标悬停在div上时,它不会立即启动,我实际上希望只有当鼠标停在div上时,才会出现悬停动画,就像在chromewebstore中,当鼠标停在一个应用程序容器上时一样(https://chrome.google.com/webstore/category/home)

我现在的例子

编辑:为了进一步澄清,此页面上会出现多个单元格


谢谢你能提供的任何帮助

我的建议是更改悬停事件。悬停时,获取鼠标坐标,然后开始超时,可能为50-100ms。使用超时将当前鼠标坐标与原始坐标集进行比较。如果它们相同,并且尚未执行动画,则执行动画。这只是一个粗略的想法,你可以尝试什么


编辑:还记得制作一个鼠标离开事件来停止超时。

您可以尝试jquery的hoverintent插件


我会这样做。。。更简单:简单明了:

$('.smallCell.slidedown').hover(function() {
    $(".overlay", this).delay(1000).queue(function(){
    $(this).animate({
        top: '-260px'
    }, {
        queue: false,
        duration: 300
    });


    });
}, function() {
    $(".overlay", this).animate({
        top: '0px'
    }, {
        queue: false,
        duration: 300
    });
});

这也是不言自明的:它将延迟1秒,并对函数进行排队。

您可以使用setTimeout,并与存储的元素“悬停状态”进行比较。 如果使用多个单元格,我的示例可能不是存储悬停状态的最佳方法,但这个概念仍然有效

var TIME_UNTIL_SLIDE = 1000;

var isHovering = false;
var hovertimer;

$('.smallCell.slidedown').hover(function() {
    isHovering = true;
    var $this = this;
    hovertimer = setTimeout(function(){
        if(isHovering) {
             $(".overlay", $this).stop().animate({
                top: '-260px'
            }, {
                queue: false,
                duration: 300
            });
        }
    }, TIME_UNTIL_SLIDE);

}, function() {
    isHovering = false;
    $(".overlay", this).stop().animate({
        top: '0px'
    }, {
        queue: false,
        duration: 300
    });
});
如图所示:
也许你应该试试这个插件:


易于使用,示例就在这里

看看这把小提琴,它很容易使用:


这对你有好处吗?你所做的只是引入一秒钟的延迟。如果我将鼠标移到div上,然后退出几次,会发生什么?OP想在鼠标停止移动时触发动画。upz,我的坏!再读一遍,你是对的。这不会像他想要的那样起作用=(“悬停意图”应该做的诀窍。感谢所有的答案,伙计们,巨大的帮助!所有这些看起来都是很好的方法。去和他们一起玩,看看结果如何。一旦我选择了答案,我一定会记下答案。再次感谢!非常棒的建议,我有一种感觉,我可能会选择这个。最后我选择了这个。斯穆特成功了有多个单元格的hest。很好的建议唯一的问题是,它在1秒后仍会发射。我需要它一直保持到鼠标完全停止移动。很好的建议!这一个实际上可能就是我要用的那个,看起来它会完全满足我的需要,不会增加太多的负担。尽管我希望避免使用plug-in.hmmm我尝试了这个,但它不起作用,你看到哪里有问题了吗?对不起,我没有检查我的邮件。是的,我可能会尝试实现这个,在我测试了一些提到的插件之后。不过这似乎是一个非常聪明的方法,因为我诚实地希望避免使用插件。