【问题标题】:What is the exact rule of jQuery's animate() parameters?jQuery 的 animate() 参数的确切规则是什么?
【发布时间】:2010-06-13 04:42:47
【问题描述】:

jQuery 1.4.2 的animate() API spec

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

但似乎我们可以提供durationcallback easing

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

它会起作用的。

但如果我们提供 easingcallbackno duration

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

那么宽松将不会生效。那么 API 究竟应该是什么?

更新:请看下面我的回答。

【问题讨论】:

    标签: jquery animation effects


    【解决方案1】:

    通常 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 })
    

    【讨论】:

    • 是的,我认为jQuery 据说有非常好的规范和文档......但这方面不是很清楚......也许只是相对而言,与其他js框架相比.
    • 另外,“正常”似乎不是官方值(不在规范中,也不在代码中)。我们可以传入“weird”,它仍然是默认的,和“normal”一样......
    • @Jian - 实际上围绕"normal" 进行了一些讨论,实际上 jQuery UI 打破了这一点,因为有人决定打破它,许多人希望改变这一点……jQuery UI 不应该破坏 jQuery Core 的行为,尤其是当文档明确使用它时。上面有几个bug,herehere
    【解决方案2】:

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

    1) 提供400, "swing", doThis,因为 400 似乎是默认持续时间(在 jquery 代码中查找 fast:,您可以看到 fast 为 600,slow 为 200,如规范所示,_default 为 400。

    2) 提供undefined, "swing", doThis 并且它有效。提供null, "swing", doThis,它也可以工作。尽管如果没有以这种方式记录,则依赖此方法可能并不好。如果参数被省略,undefined 是真正的方法,但有时人们会说使用 null,即使它不是官方正确的。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-09-18
      • 2015-04-15
      • 1970-01-01
      • 2011-06-18
      相关资源
      最近更新 更多