使用 jquery animate() 链接位置动画

Posted

技术标签:

【中文标题】使用 jquery animate() 链接位置动画【英文标题】:chained position animations with jquery animate() 【发布时间】:2011-07-13 04:20:10 【问题描述】:

我想让一组 11 个元素“飞”到一个页面中 - 通过使用 jQuery animate() 的一组链式动画。

我有以下内容:http://bit.ly/g90S3J 这似乎在 FF3.6 中运行良好 但我看到在 IE8 中 - 动画和位置偏离了 - 元素保留在舞台之外,或者在舞台上飞行,而在 FF 中,它们应该聚集在中心周围。

在 FF 中有时也会发生的情况是,元素的最终位置似乎偶尔会偶尔发生变化。奇怪!!

有人可以帮帮我吗?

非常感谢!

【问题讨论】:

FWIW,item1 的上边距为 -1550px,当你为它设置动画时,你正在向它添加 1200px。它仍然会有一个大于其高度的负边距。因此,它仍然会被“隐藏”。 没关系,我看到 topmargin-top... 【参考方案1】:

你有这个:

.flyItem 
    display: inline;
    overflow: visible;
    position: absolute;

当我的意思是设置一个初始位置时,只需添加:

  top:0;
   left:0;

到属性,因为你有:

$(function() 
       $("#item1").animate('top': '+=1200px',2000, 'swing', function()
      $("#item2").animate('right': '-=2630px',3000, 'swing', function()
        $("#item3").animate('top': '-=2700px',3000, 'swing');        
                                                                                         );                                                           
                                                                        ); 

       $("#item6").animate('right': '+=1860px',2000, 'swing', function()
       $("#item5").animate('top': '+=1000px',3000, 'swing', function()
        $("#item4").animate('right': '+=1000px',3000, 'swing');          
                                                                                );                                                        
                                                                        ); 


);

“flyItem”元素必须全部位于相对定位的 div 内。

【讨论】:

你必须为每个元素设置一个初始位置,因为 IE8 是 jerk。 @jesper:这不是答案;应该是评论。 我尝试添加 top:0;左:0;但是FF和IE还是有区别的。看看同一个链接 - 我刚刚编辑了蓝星和滚动的位置 - 它们在 IE 和 FF 中看起来不同。 好的 - 找到了解决方案 - 当移动元素位于相对定位的 div 内时,上述方法有效。 (我分别编辑了答案)谢谢!

以上是关于使用 jquery animate() 链接位置动画的主要内容,如果未能解决你的问题,请参考以下文章

使用 jQuery .animate() 时的图像动画问题

jQuery .animate/.each 链接

Jquery中animate 不执行

利用velocity.js将svg动起来

为啥 jQuery.animate 位置不起作用?

带有固定元素的 jQuery .animate() 和 css 位置