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

jQuery Easing插件-“'s”已定义;“jump”出现在多行文本上

  •  1
  • asfsadf  · 技术社区  · 15 年前

    我正在尝试使用Easing插件,以摆脱我的 slideDown() 影响:

        $('.message').each(function (index) {
            var t = $(this);
            t.hide();
            t.slideDown(3000, 'easeOutQuad');
        });
    

    效果仍然很不稳定,我在VS 2010中注意到以下6个例子:

    's' is already defined
    

    jquery.easing.1.3.js 文件。

    有人在jQuery-1.4.3中成功地使用了Easing插件吗?还有什么是我忽略的,或者是我不知道的解决方法吗?

    我复制了“跳跃” here

    似乎只要每个div引入多条线,问题就会出现。

    1 回复  |  直到 15 年前
        1
  •  1
  •   James Kovacs    15 年前

    如果您查看源代码,则警告来自一些重新定义s的简化方法。例如,看看外弹性:

    easeOutElastic: function (x, t, b, c, d) {
        var s=1.70158;var p=0;var a=c;
        if (t==0) return b;  if ((t/=d)==1) return b+c;  if (!p) p=d*.3;
        if (a < Math.abs(c)) { a=c; var s=p/4; }
        else var s = p/(2*Math.PI) * Math.asin (c/a);
        return a*Math.pow(2,-10*t) * Math.sin( (t*d-s)*(2*Math.PI)/p ) + c + b;
    },
    

    我已经创建了一个jsFiddle,在FF4b6、IE8或Chrome9中看不到任何程度的起伏。

    http://jsfiddle.net/TbwPT/

    可能没有期望的那么平滑,但我的视觉印象是,这是由于WRT必须渲染或不渲染完整像素的限制。当减缓速度时,你会看到整行像素弹出。这是浏览器定位文本的方式的一个限制,而不是放轻松的功能。e、 你不能把a放在顶部=3.5px左=2.9px。我想如果你想要一个更平滑的动画,你就得看看画布上的文本动画;。

    更新:看一看jsFiddle(http://jsFiddle.net/hPred/)每个div有多行,当未指定div时,动画似乎无法确定div的正确最终高度。它正确地从零到单行高度设置动画,然后弹出到div的整个高度。如果指定高度,它正确地从零到最终div高度设置动画。以下技巧可用于设置div高度:

    $('.message').each(function (index) {
        var t = $(this);
        t.height(t.height());  // Read the computed height and then set it explicitly
        t.hide();
        t.slideDown(3000, 'easeOutQuad');
    });
    

    现在这个动画适合我。。。 http://jsfiddle.net/hPred/3/