jquery animate()不是从FIREFOX中的当前位置开始

jquery animate()不是从FIREFOX中的当前位置开始,jquery,jquery-animate,position,offset,Jquery,Jquery Animate,Position,Offset,更新:我刚刚意识到代码在safari/chrome中的工作与预期一样,只是不是firefox(25.0) 我正在用水平滑动的面板制作幻灯片 我希望animate()到一个相对位置从当前位置开始,但它会立即将我的元素移动到另一个位置,然后从那里开始设置动画 $('section').eq(0).animate({left:'-=500px'},500); 这把小提琴显示了这个问题 我怀疑css是罪魁祸首(“margin:auto”?)…如果css看起来有点复杂,面板是居中的,垂直的和水平的,并且

更新:我刚刚意识到代码在safari/chrome中的工作与预期一样,只是不是firefox(25.0)

我正在用水平滑动的面板制作幻灯片

我希望animate()到一个相对位置从当前位置开始,但它会立即将我的元素移动到另一个位置,然后从那里开始设置动画

$('section').eq(0).animate({left:'-=500px'},500);
这把小提琴显示了这个问题

我怀疑css是罪魁祸首(“margin:auto”?)…如果css看起来有点复杂,面板是居中的,垂直的和水平的,并且对浏览器大小有响应,我最终让这部分工作起来,所以任何css更改都不需要打破这一点

section {
  width:100%;
  height:100%;
  background-color: #f00;
  bottom: 0;
  height: 100px;
  width: 180px;
  left: 0;
  margin: auto;
  position: absolute;
  top: 0;
  right: 0;  
  padding:0px;
}
下面是关于这个问题的另一个角度:

var div1 = $('section').eq(0);
var pos = div1.position();
div1.animate({left:''+pos.left+'px',opacity:'1'},0);
工作中

将面板设置为新位置的动画,而不是将其设置为已存在的位置。基本上,它将面板放置在我尝试为其设置动画()时跳到的位置。我想可能有某种屏幕偏移发生了,我不明白


我发现我可以通过设置向左:0的动画来回到起始位置,而不是试图存储当前的左位置并返回到它。但我的动画仍然有一个丑陋的跳跃。有人知道发生了什么吗?

如果我告诉你…

您不需要当前的pos吗

$('#first-slide').click(function(){
    var df = 500;
    $(this).animate({left:'-='+df+'px',opacity:'0.0'}, {
        duration: df,
        complete : function(){
            $(this).animate({left:'+='+df+'px',opacity:'1'},df); 
        }
    });
});
但是,如果您多次单击它,这两个按钮都将断开,并且不会转到预期的位置

那么像这样的事情呢?

$('.slides section').first().click(function(){
    var df = 500;
    $(this)//get element
    .stop(true,false)//prevent buildup
    .animate({left:'-'+df+'px',opacity:'0'},df)//out
    .delay(0)//pause between animations
    .animate({left:'0px',opacity:'1'},df);//back
});
css

.slides,.slides section{height:100px;width:180px;position:absolute}
.slides{margin:auto;top:0;right:0;bottom:0;left:0}
.slides section{background-color:#f00}

胡闹:

当我尝试你的JSFIDLE(在firefox中)时,它做了和我一样的事情。它突然向右啪的一声,然后从那个位置启动。如果我在chrome中查看它,它正是我想要的。和我的版本一样,你是对的。是
右侧:0
导致了它。在设置动画之前,它会跳到右侧。让我们看看是否可以在不使用
top、left、right、bottom
hack的情况下将其居中放置。哇,谢谢!这个解决方案确实有效,但我无法插入这些值,并让元素以我想要的方式保持在中心。我的解决方案是将位置从绝对位置改为相对位置,这也破坏了我的布局,但随后我将我的位置放在了另一个位置上,该位置具有我需要的粗调居中。相对定位修复了动画,但打破了定心,我可以用一个额外的容器来修复。实际上,我的解决方案不起作用。因为现在我正在制作容器div的动画,它有绝对的位置,所以它做同样的事情。如果我设置内部动画,它在移动时会在容器的边界处被切断,我希望它看起来像是脱离屏幕。我确信你的方法是可行的,但我有很多额外的代码,当我将它插入我的代码时,我无法使它工作。也许我需要做更多的实验。你在IE上也会遇到同样的问题:/