代码之家  ›  专栏  ›  技术社区  ›  nonopolarity

jQuery的animate()参数的确切规则是什么?

  •  0
  • nonopolarity  · 技术社区  · 14 年前

    animate() API spec

    .animate( properties, [ duration ], [ easing ], [ callback ] )
    

    但似乎我们可以提供 duration , callback ,和 easing

    .animate({left: '+= 100'}, 600, doThis)
    

    它会起作用的。

    但如果我们供应 放松 回拨 期间

    .animate({left: '+=100'}, 'swing', doThis)
    

    那么宽松政策就不会生效。那么API到底应该是什么呢?

    请看下面我的答案。

    2 回复  |  直到 14 年前
        1
  •  2
  •   Nick Craver    14 年前

    通常jQuery按类型确定可选参数,例如:

    $('.class').animate({opacity: 'toggle'}, doThis);
    

    但是在持续时间/放松的情况下,因为它们都是字符串,所以不能(如果只有一个字符串, it assumes it's the duration ). 你要么用 'normal' 作为持续时间,如下所示:

    .animate({left: '+=100'}, 'normal', 'swing', doThis)
    

    .animate(options, properties)

    .animate({left: '+=100'}, { easing: 'swing', complete: doThis })
    
        2
  •  0
  •   nonopolarity    14 年前

    尽管我对API规范还不是很确定,但以下是一些可行的解决方案:

    1) 供应 400, "swing", doThis ,因为400似乎是默认的持续时间(查找 fast: 在jquery代码中,您可以看到fast是600,slow是200,正如在spec中一样,\u默认值是400。

    undefined, "swing", doThis 而且很有效。供应 null, "swing", doThis undefined null 尽管官方说法并不正确。

    3) 只是使用 {easing: "swing"} 这是跳过持续时间并提供一种缓解方法的官方方法。如果需要回调,则使用 {easing: "swing", complete: doThis}

    解决方案3似乎是最好的,因为它不使用规范中模糊的部分,而完全使用规范中更清晰的部分。