【发布时间】:2012-01-31 23:49:43
【问题描述】:
所以我一直在玩弄这个日历式的东西:
- div 网格(模仿表格)
- 将鼠标悬停在表格单元格上会显示一个带有 2 个图标的工具提示,每个图标由一个带有 :before 和 :after 元素的 div 组成
- 图标的颜色会根据悬停单元格的颜色及其上一个同级单元格的颜色(单元格的颜色类应用于图标)而改变。
精简小提琴:http://jsfiddle.net/e9PkA/1/
这在除 IE8 及以下的所有浏览器中都可以正常工作(IE lte 7 和我永远不会成为朋友,但 IE8 会很高兴)。
IE8 会注意到 classNames 的变化并相应地更新 div 的颜色,但完全忽略 :before 和 :after 声明所隐含的颜色变化,例如:
.wbscal_icon_arrival:before {
width: 12px;
height: 4px;
left: -8px;
top: 6px;
background-color: silver;
}
.wbscal_icon_arrival.wbscal_full:before {
background-color: #ff0000 !important;
}
在上面的小提琴中,:before/:after 元素只着色一次:第一次显示工具提示。
在另一个版本中,每次我将鼠标移出“表格”div 时,它都会更新,但如果在悬停“单元格”div 边框时工具提示被隐藏,则不会更新。
我已经尝试通过在元素/其父级/主体中添加/删除其他类、编辑/访问样式属性等等来强制触发重绘,所以我想这不是你的平均重绘问题。
是否有 JS hack 可以解决此问题并强制 :before/:after 更新?
【问题讨论】:
标签: javascript css internet-explorer-8 pseudo-element