【发布时间】:2012-06-15 15:53:22
【问题描述】:
我有一些divs 在悬停时显示,然后被隐藏。但是,在 Chrome(19.0.1084.56 m,Windows XP)中,当您取消悬停时,Chrome 不会将它们重新绘制为已消失,直到您执行滚动或调整窗口大小等操作。
我知道对我的 CSS 进行某些修改可以解决问题,例如删除 position 或 z-index 和 overflow 属性,但我真的不想这样做 - JSfiddle 是从我需要它们的完整站点配对下来的。
谁能解释一下为什么这个重绘问题会在 Chrome 中发生?有没有人有任何提示可以在不弄乱我需要的 CSS 的情况下修复它?
【问题讨论】:
-
它不是真正的菜单,而是下拉式的。
-
看起来 div 可以是列表项,并使用与菜单类似的下拉标记/样式。例如htmldog.com/articles/suckerfish/dropdowns。这在 IE 的早期版本中也不起作用,因为 :hover 选择器仅适用于锚点。这似乎 jQuery 在悬停时使用 show() 或 hide() 会有所帮助。不过不确定你是否想走那条路。
-
我可以在最新的 Chrome Canary 中重现。
-
谢天谢地,我只需要支持到 IE8,技术上根本不需要支持 Chrome,但我更愿意让该网站在所有现代浏览器中运行。下拉列表的内容不一定是列表,但如果是,我会将其标记为 this。 jQuery 似乎对此有点沉重,因为它目前在所有浏览器中都可以使用,但 Chrome 仅使用 4 条 CSS 规则,但如果无法隔离重绘问题,我可能会考虑从头开始重新处理它。
-
另一个与此相关的 Chrome 错误(因为相同的修复工作)...折叠覆盖元素后屏幕上留下的水平伪影线。
标签: css google-chrome browser redraw