5

我使用这段代码:

$("img.cloudcarousel").each(function(i, e){
  coords[i] = $(e).offset();
});

保存图像的位置(并且有效)。然后我为它们设置动画并移动它们。然后我使用这段代码:

 $("img.cloudcarousel").each(function(i, e){
   $(e).animate({top:coords[i].top, left:coords[i].left}, 1000);
 });

让他们回到他们所属的地方。在 IE(至少 8 个)中它工作正常,但在 Chrome 和 Firefox 中,它向左和向下动画 40-50 像素太多(就像它的过度动画一样)。

不要问我是怎么发现的:当我在它们上面使用鼠标滚轮时,它们会转到它们所属的地方!

我想这与动画队列的建立有某种关系,但是我只使用了四个图像,并且在 x 时间后它不会自行修复,只能在鼠标滚轮的东西上。

编辑:添加到 jsfiddle.net

我不太确定该网站是如何工作的,但我在其中添加了我的 HTML 和 JS:

http://jsfiddle.net/3wqYg/

4

1 回答 1

3

$(e).offset() 没有返回您的小提琴中当前定义的值。我没有查找偏移量的定义,但是如果您输出坐标,您会发现它与代码中的不一样

编辑:我看到了问题,请参见 offset() http://api.jquery.com/offset/它返回相对于文档的 x,y,但是当您将其动画返回时,它是相对于父元素的(默认行为)。所以在文档中提到了使用 position()。这是相对于父元素的,我没有尝试过,但如果你使用它应该可以工作。

最终编辑:是的,位置很好,请参见http://jsfiddle.net/3wqYg/1/您必须将其复制到测试页面中,因为它在小提琴上没有动画

于 2012-05-08T17:31:17.873 回答