【问题标题】:jQuery fadeTo() performance on many elementsjQuery fadeTo() 在许多元素上的性能
【发布时间】:2012-03-06 08:27:40
【问题描述】:

我在图片库上做了一个很酷的淡入淡出悬停效果,以指示您悬停在哪一张上 - 但是当有超过 20 张左右的图片时,它确实会影响性能。

这是我的做法(非常基本)

$('img').on('hover', function(){
    $(this).stop().fadeTo(100,1);
    $('img').not($(this)).stop().fadeTo(100,.5);
});

有没有人对此有很好的优化,或者首先有更好的方法?

请不要说“只使用 CSS”,它已经作为后备存在。

【问题讨论】:

  • 对不起,但你想成为using CSS 回退到内置图形功能的浏览器。所以你想使用 CSS,而不是 JS!在这篇文章中,JS 不使用您的显卡,而是使用内存中的纯数学(有限和隔离的 CPU 线程).. 性能很快就变得糟糕了.. 使用 CSS3!如果用户没有 CSS3,请告诉他们现在升级!
  • @ppumkin 尽管我同意你的观点,但不幸的是,我无法强迫我的用户升级(尽管我真的很想这样做)。除此之外,我将如何仅使用 CSS3 来实现这一点?坚持回答,我可能会接受

标签: jquery image fadeto


【解决方案1】:

试试这个看看性能是否提高:

$('img').on('mouseenter', function(){     
    $(this).fadeTo(100, 0.5);
}).on('mouseleave', function(){     
    $(this).stop(true).fadeTo(100, 1);
});

jsFiddle 在这里:http://jsfiddle.net/26w5q/

似乎工作正常。

【讨论】:

  • aaaah,当然 :) 非常有意义,因为您只为一个元素设置动画,而不是所有元素。今天不要有我的想法......先生,你赢得了互联网。
  • 哈哈,虽然很容易错过,但祝你在 jQuery 冒险中好运,这很有趣! :)
  • 使用此解决方案,您将在 IE6、7、8 中遇到大问题 :(
  • 刚刚在 IE7,8 上测试过,运行速度和在 Firefox 上一样快。
  • 也许,现在只是测试它......但我总是可以绑定 mouseover 等或使用 .hover() - 无论哪个有效,重要的部分是我不尝试为 80 的不透明度设置动画同时拍照:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-08-31
  • 2011-05-27
  • 1970-01-01
  • 1970-01-01
  • 2021-02-06
  • 1970-01-01
  • 2012-01-05
相关资源
最近更新 更多