jQuery为加载时聚集在一起的元素设置动画

jQuery为加载时聚集在一起的元素设置动画,jquery,jquery-animate,Jquery,Jquery Animate,得到了一个基于Google Wave的页面http://wave.google.com/maintenance/index.html 但是,云不是从左到右,而是从右到左,所以我将所有引用从“左”切换到“右”: #cloud position: absolute; left: 5%; top: 15px; z-index: 2; width: 120px; height: 91px; background-image: url(../images/cloud.gif); background-r

得到了一个基于Google Wave的页面http://wave.google.com/maintenance/index.html

但是,云不是从左到右,而是从右到左,所以我将所有引用从“左”切换到“右”:

#cloud

position: absolute;
left: 5%;
top: 15px;
z-index: 2;
width: 120px;
height: 91px;
background-image: url(../images/cloud.gif);
background-repeat: no-repeat;
变成:

#cloud1

position: absolute;
right: 60%;
top: 115px;
z-index: 2;
width: 150px;
height: 163px;
background-repeat: no-repeat;
JS调用是:

function cloud1Move()
{
    if (!cloud1Moved)
    {
        $("#cloud1").css("right", $("#cloud1").offset().right)
    }
    $("#cloud1")
    .animate(
    {
        right: $("#sky").width()
    },
    cloud1Moved ? 12000 : 10000,
    "linear",
    function()
    {
        $(this).css("right", -parseInt($(this).css("width")))
        cloud1Moved = true;
        cloud1Move();
    }
  );
}
这在FF中起作用,但Chrome/Safari似乎将所有元素集中在屏幕的右侧,然后从右向左设置动画。一旦他们离开左边的屏幕,他们就会按预期工作。只是初始负载不是我所期望的

如果我只使用left->right,那么它们将在屏幕上正确地呈现在适当的位置,并按照预期的方式工作

关于我正在做什么的任何见解都可能在JS调用中不正确

谢谢,
罗伯

嗯$cloud1.offset不返回具有属性right的对象,只返回left和top

更好地使用:

 $("#cloud1").css("left", $("#cloud1").offset().left)
在你的css中也是如此

left: 40%;

作为一个实验,我在上面运行了一个本地版本的GoogleWave,并将呼叫从左改右。我能够在屏幕右侧复制bucnhing,因此问题似乎在于CSS元素的加载定位(FF除外)或JS中的开始动画的实现。