有什么理由说使用CSS:hover命令或使用onmouseover / onmouseout时Internet Explorer(在我的情况下是IE7)变得迟钝并占用大量CPU时间?
我真的没有做任何复杂的事情,我的网页也不是特别大。
当我将鼠标移动到页面上的任何其他位置时(没有任何变化)iexplore.exe保持在0%,但是一旦我开始移动任何包含onmouseover / onmouseout的元素或附加到它的CSS悬停类,变得非常缓慢和缓慢,CPU使用率也很高。
该页面在Firefox,Chrome和Safari 中运行良好,但速度问题/速度不高。
提示/想法?
修改:onmouseover / onmouseout位于< tr> 标记上(突出显示网格中的一行); CSS:hover用于交换背景图片网址的< a> 标记。
答案 0 :(得分:6)
你需要一个非闪烁的 CSS翻转(不会在每次微小的鼠标移动时触发连续的'悬停'信号)。在悬停时交换图像通常不能很好地工作,尤其是在IE中。
在没有Javascript库的情况下执行此操作的最佳方法是将所需的“悬停”图像作为背景添加到下面的元素您悬停的那个,以及非悬停图像作为前面元素的背景。
然后,对于前面元素的CSS :hover
状态,设置background-image: none; background-color: transparent;
,以便显示底层元素中所需的“悬停”图像。
检查此example non-flicker CSS rollover的源代码。
根据您的标记,您可能需要调整z-index
值以获取基础元素的“前面”元素。
答案 1 :(得分:0)
没有做任何复杂的事情
嗯,你在做什么 ?我只是通过改变背景色来看到这一点。 IE似乎并不擅长这一点。