jQuery 设置默认全局缓动和队列

jQuery Set Default Global Easing and Queue

本题set jquery default animation speed

有人用 $.fx.speeds._default = 400; 回答了如何设置默认动画持续时间,我真的很想知道如何在同一个庄园中设置默认缓动和默认队列。可以吗?如果是,怎么做?

这变得容易了...

看起来 2.2 release 发生了变化:

set default easing using jQuery.easing._default

我会在这里留下原来的答案。我想缓动插件现在可能需要更新了。


对于问题的第一部分 - 默认缓动不如动画速度容易访问。 jQuery 源代码中关于缓动的部分没有默认值 - 它只是回退到补间原型构造中 "swing" 的固定定义。最好的方法可能是添加一个小的缓动扩展( 全局可访问的),就像 special easing 方程所做的一样。 swing 下方是 redefined/copied 作为 curve,创建了扩展内部的默认选项,并且 swing 本身(原型中的回退)用于反映新的 可变默认属性:

$.easing['curve'] = $.easing['swing'];

$.extend($.easing, {
  default: 'curve',
  swing: function(x, t, b, c, d) {
    return $.easing[$.easing.default](x, t, b, c, d);
  }
});

现在在你编写的任何函数中,都可以设置默认值:

$.easing.default = 'linear';

在基本级别上,当然只有两种类型可用,linearcurve(以前是 swing)。

http://codepen.io/anon/pen/aOOMPV?editors=001

如果要使用专用插件,顺便这样写:

$.easing.def = 'linear';

然后使用 swing jswing(我不太喜欢这个术语,与插件不同)但是你当然可以稍微重写它(就像我通常做的那样)。

也许你可以详细说明问题的第二部分?很明显,这符合条件(标准效果队列),但我认为这不是您想要的:

$.fx.off = !$.fx.off;

https://api.jquery.com/jQuery.fx.off/