我有一个基本的动画,我想在http://jsfiddle.net/5YrF2/3/
工作在Firefox中,一切都按预期工作,但在Chrome或Internet Explorer中,动画对象的位置会在第一个动画命令后跳转到屏幕底部。
谁能看到我做错了什么?
更新 我现在已经在http://jsfiddle.net/5YrF2/6/
创建了一个带有额外管道的动画的新版本一切正常,直到.block3动画,它应该向右10像素,然后向上15像素。相反,它做了一些奇怪的摆动。任何想法?
答案 0 :(得分:2)
您正在尝试为CSS“bottom”属性设置动画,这可能会在首次未明确设置时出错。尝试设置动画“顶部”属性并反转方向:
$.Deferred(function(dfr) {
dfr.pipe(function() {
return $(".block1").delay(500).fadeIn().animate({
left: '+=600'
}, 2500, "linear").animate({
left: '+=10',
top: '-=10'
}, 100, "linear").animate({
left: "+=27"
}, 100, "linear").animate({
left: '+=10',
top: '+=10'
}, 100, "linear").animate({
left: "+=25"
}, 100, "linear").fadeOut();
}).pipe(function() {
return $(".block1").css('left', '');
}).pipe(function() {
return $(".block1").delay(500).fadeIn();
})
}).resolve();
答案 1 :(得分:2)
你有一个绝对定位的div,没有底部设置。 Chrome& IE在这种情况下正常工作 - 你的第二个动画将10添加到“bottom”,将底部设置为0(因为它未设置)并将其设置为10.一个绝对定位的div,其底部为10,并且没有顶部,将显示容器底部10个像素。
你想让元素“向上”移动吗?如果是这样,我会说使用top而不是。 (但是你也会遇到同样的问题,因为你也没有设置top属性)。我会在你的元素上摆脱“margin-left”和“margin-top”并使用top / left / etc。代替。