【发布时间】:2011-04-01 13:50:44
【问题描述】:
我正在尝试为绝对定位和定位在底部和左侧的元素设置动画到顶部和右侧的位置。
CSS
.obj{
position: absolute;
bottom: 0;
left: 200px;
}
JS
$('.obj').click(function(event){
$(this).animate({top:'15%', right: '300px' }, 400).css({'bottom': '', 'left': ''});
});
我目前的问题是某些浏览器(Chrome/Safari)会在 CSS 动画时触发 CSS,从而导致对象在屏幕上跳跃。
编辑:似乎清除了底部和左侧的值,然后从top: 0, right: 0开始动画。
另外,我不能将.css() 放在.animate() 的完整函数中,因为当前的底部和左侧位置会影响它的动画效果。
感谢您的帮助!
【问题讨论】:
-
在 animate() 之前链接 css 函数是否会产生相同的结果?
-
是的,无论你如何链接它,它似乎是在 Chrome/Safari 中首先设置
.css()。 -
对您来说“飞”是指立即跳跃?如果是的话,我看不出这个css调用会如何。你能描述一下当你删除它时会发生什么,或者在线提供一个例子(以 JSFiddler 为例)
-
哈哈,是的,跳跃似乎更好地描述了它。它从当前位置跳到
top:0, right:0并从那里开始动画。 -
正如我之前所说,我看不出它现在的行为以及没有样本的情况下应该如何。所以我认为可以在这里做的是尝试使用“absolutize”函数(基本上,它来自prototypeJS,但它在jQuery中有端口)。您可以:1)将所有开始和结束位置转换为绝对坐标(左和上),这将简化翻译,或 2)编写您自己的 right_absolutize() 函数,将开始坐标转换为 top%-rightPx 坐标。这是相当蛮力的,但我现在只能想到没有在线示例。
标签: javascript jquery