我想创建“回旋镖”动画(链式动画,第二个动画将所选元素[s]恢复为原始值)。
如果我的假设是正确的,那么元素的attr值将被视为它们的原始值(IOW,在被第一个jQuery动画改变后没有更新),应该(至少在理论上)可以以编程方式将它们设置回来像这样(伪文本):
$('something').animate( { fontSize: 1.5em, other stuff... } ).animate( { fontSize: $('something').attr(fontSize } ) ...
我在做梦吗?另一种选择是在回调函数中的.AddClass()在初始动画之后将值设置回来,但我更喜欢另一种方法,如果可能的话;通过AddClass()设置它将比一个超速的子弹非常生涩/快速,看起来像“stoopid。”
答案 0 :(得分:1)
如果你想阅读css属性,请不要
var size = $('something').attr(fontSize };
到
var size = $('something').css('font-size');
$('#someId').animate({fontSize: size},3000);
答案 1 :(得分:1)
fontSize
是一个CSS属性,不是可以使用.attr()
设置或检索的元素属性。你可以这样做:
$('something').data("fontSize",$('something').css("fontSize"))
.animate( { fontSize: "1.5em" }, 1000 )
.animate( { fontSize: $('something').data("fontSize")}, 1000 );
......但它有点笨重。您也可以使用局部变量来记住属性:
var $something = $('something'),
fontSize = $something.css("fontSize");
$something.animate( { fontSize: "1.5em" }, 1000 )
.animate( { fontSize: fontSize}, 1000 );
另请注意,您的原始代码存在语法错误:您需要将1.5em
放在引号中。
“我想创建”回旋镖“动画”
您是否考虑过只创建一个boomerang
插件,以便您可以说:
$('something').boomerang( {fontSize: "1.5em"});
然后任何笨拙都会包含在插件中,当你使用它时你不必看到它......