当前位置:  开发笔记 > 编程语言 > 正文

jQuery animate()和浏览器性能

如何解决《jQueryanimate()和浏览器性能》经验,为你挑选了3个好方法。

我有一些元素,我在页面上移动非常缓慢.基本上,我在40秒左右的时间内减少了两个图像的左边距.

在视觉上,它的工作非常漂亮.但是,我的处理器在动画期间跳跃到大约50%的使用率.这不是特定于任何单个浏览器 - 在Safari3和Firefox3上也是如此.如果我有两个浏览器都运行该页面,我的CPU会大约95%的使用率.

我正在使用jQuery 1.3.两种动画同时发生.页面上没有Flash.如果我注释掉代码(删除动画)并刷新页面,我的处理器立即恢复正常使用.

我希望我不必诉诸Flash,但即使在Hulu.com观看节目也不会像我这样刺激我的CPU.

思考?



1> Alconja..:

我知道这是一个古老的问题,蒂姆提供了一个很好的答案,但我只是想我应该为寻找这个问题的解决方案的人发布更新,因为现在有一个更简单的方法......

jQuery 1.4.3开始,您可以通过jQuery.fx.interval属性直接设置jQuery的animate使用的时间间隔.所以你可以简单地做一些事情:

jQuery.fx.interval = 50;


默认值为"13"(毫秒)

2> tvanfosson..:

我认为jQuery animate()的工作方式是它使用一个定时触发的计时器并调用一个更新DOM的函数来反映动画的状态.通常动画相对较短并且它们可能覆盖相当大量的屏幕空间,因此我怀疑(未确认)计时器到期,并以相当高的速率重置以生成平滑动画.由于动画需要很长时间,因此您可以修改动画功能,以便可以通过选项设置动画进行的速率.在你的情况下,你只需每250ms左右更新一次,因为你大约每秒覆盖3-4个像素.


由于动画已经很慢,我想知道这是否会使动画以一种锯齿状的方式捅.试图避免页面看起来像旧的Atari游戏.哈哈.我不知道,你觉得Flash会更好吗?

3> 小智..:

人们已经提到减慢jQuery的刷新率.您可以使用此文件(jquery.animation-fix.js)覆盖jQuery 1.4中的计时器函数:

function now() {
    return (new Date).getTime();
}
jQuery.fx.prototype.custom = function( from, to, unit ) {
    this.startTime = now();
    this.start = from;
    this.end = to;
    this.unit = unit || this.unit || "px";
    this.now = this.start;
    this.pos = this.state = 0;

    var self = this;
    function t( gotoEnd ) {
        return self.step(gotoEnd);
    }

    t.elem = this.elem;

    if ( t() && jQuery.timers.push(t) && !jQuery.fx.prototype.timerId ) {
        //timerId = setInterval(jQuery.fx.tick, 13);
        jQuery.fx.prototype.timerId = setInterval(jQuery.fx.tick, 2050);
    }
}

所以用它来修改这一行

jQuery.fx.prototype.timerId = setInterval(jQuery.fx.tick, 50);

将50更改为您想要的任何间隔.那是毫秒(ms)

如果将此代码保存在其他文件中,则可以像下面这样附加它:




**请注意使用此解决方案的任何人**:此功能现在[内置于jQuery,从1.4.3开始](http://stackoverflow.com/questions/459224/jquery-animate-and-browser-performance/ 4392685#4392685).(虽然+1为1.4.3之前的一个很好的解决方案).
推荐阅读
凹凸曼00威威_694
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有