CSS Hover& onmouseover / out导致Internet Explorer中15-20%的CPU使用率

时间:2009-09-23 00:19:41

标签: css performance internet-explorer

有什么理由说使用CSS:hover命令或使用onmouseover / onmouseout时Internet Explorer(在我的情况下是IE7)变得迟钝并占用大量CPU时间?

我真的没有做任何复杂的事情,我的网页也不是特别大。

当我将鼠标移动到页面上的任何其他位置时(没有任何变化)iexplore.exe保持在0%,但是一旦我开始移动任何包含onmouseover / onmouseout的元素或附加到它的CSS悬停类,变得非常缓慢和缓慢,CPU使用率也很高。

该页面在Firefox,Chrome和Safari 中运行良好,但速度问题/速度不高。

提示/想法?

修改:onmouseover / onmouseout位于< tr> 标记上(突出显示网格中的一行); CSS:hover用于交换背景图片网址的< a> 标记。

2 个答案:

答案 0 :(得分:6)

你需要一个非闪烁的 CSS翻转(不会在每次微小的鼠标移动时触发连续的'悬停'信号)。在悬停时交换图像通常不能很好地工作,尤其是在IE中。

在没有Javascript库的情况下执行此操作的最佳方法是将所需的“悬停”图像作为背景添加到下面的元素您悬停的那个,以及非悬停图像作为前面元素的背景

然后,对于前面元素的CSS :hover状态,设置background-image: none; background-color: transparent;,以便显示底层元素中所需的“悬停”图像。

检查此example non-flicker CSS rollover的源代码。

根据您的标记,您可能需要调整z-index值以获取基础元素的“前面”元素。

答案 1 :(得分:0)

  

没有做任何复杂的事情

嗯,你在做什么 ?我只是通过改变背景色来看到这一点。 IE似乎并不擅长这一点。