首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jQuery的.animate()

jQuery的.animate()
EN

Stack Overflow用户
提问于 2010-01-23 12:52:18
回答 3查看 207关注 0票数 0

在通过.show("slow")使一些div可见之后,我使用.animate()来平滑地重新定位它们。由于div可能仍在执行动画,也可能不在执行动画,因此我还使用.queue()来确保在动画完成后发生移动。

问题:.animate()不起作用。它会找到正确的代码行,但不会做任何事情,也不会生成任何错误。帮助?

Javascript:

代码语言:javascript
复制
function arrange_sections() {
        var margin = 20;
        var left = margin;
        $(".section.active").queue(function() {
            $(".section.active").each(function() {
                $(this).animate({ "left": left }, "slow");
                left += $(this).width() + margin;
            });
        });
}

CSS:

(我使用show("slow")将部分显示出来:无)

代码语言:javascript
复制
.section {
    display: none;
    position: absolute;
    top: 5%;
    left: 5%;
    padding: 20px;
    z-index: 20;
}
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-01-23 14:32:53

最终找到了答案--我所需要做的就是在传递给queue()的函数末尾包含dequeue()函数。

谢谢你们的帮助,伙计们!

票数 0
EN

Stack Overflow用户

发布于 2010-01-23 13:30:30

我最好的猜测是:您需要在CSS中添加"position: relative;“或"position: absolute;”样式。

我试着运行代码,但什么也没看到。然而,当我使用Firebug的HTML标签查看页面时,我发现大多数页面都有一个“style=:140px”或类似的内容。

票数 0
EN

Stack Overflow用户

发布于 2010-01-23 14:10:47

+1对于David所说的定位。您的部分可能应该绝对定位在相对定位的div中。此外,我认为您不需要jQuery/Queue方法。试着这样做:

代码语言:javascript
复制
$(".section.active").each(function() {
    $(this).show("slow", function() {
    $(this).animate({ "left": left }, "slow");
    left += $(this).width() + margin;
    });                
}); 

这将导致在显示后调用动画左侧的速度变慢。我不知道你是如何处理这个展示的,但是当我在一个单独的函数中使用了左动画中的相同模式,然后一个接一个地调用时,动画函数根本没有从第二个队列函数中被调用。

根据我在jQuery docs中读到的内容,看起来所有动画函数都会自动添加到内置的fx队列中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2122174

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档