0

我想创建“回旋镖”动画(链式动画,第二个将所选元素返回到它们的原始值)。

如果我的假设是正确的,即元素的 attr 值将被视为它们的原始值(IOW,在被第一个 jQuery 动画更改后未更新),那么(至少理论上)应该可以像这样以编程方式将它们设置回来(伪脚本):

$('something').animate( { fontSize: 1.5em, other stuff... } ).animate( { fontSize: $('something').attr(fontSize } ) ...

我在做梦吗?另一种选择是在初始动画之后的回调函数中使用 .AddClass() 来设置值,但如果可能的话,我更喜欢另一种方法;通过 AddClass() 将其重新设置会比超速子弹非常生涩/更快,并且看起来“愚蠢”。

4

2 回答 2

1

如果您想阅读 css 属性,请不要

var size = $('something').attr(fontSize };

var size = $('something').css('font-size');

$('#someId').animate({fontSize: size},3000);
于 2013-08-02T22:55:05.660 回答
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"});

然后任何笨拙的东西都会包含在插件中,当你使用它时你不必看到它......

于 2013-08-02T22:56:42.493 回答