我一直在玩弄这个日历实现:
- 使用元素构建的网格(模拟表格)
- 悬停在一个单元格上会显示一个工具提示,其中包含两个图标,每个图标由一个带有:before和:after元素的元素组成
- 图标的颜色取决于所悬停单元格及其前一个兄弟单元格的颜色(应用到图标上的是单元格的颜色类)。
简化版示例:http://jsfiddle.net/e9PkA/1/
在除了IE8及以下版本外的所有浏览器中都可以正常运行。
IE8能够注意到类名的更改并相应地更新
.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;
}
在上面的fiddle中,:before/:after元素仅在第一次显示工具提示时着色。在另一个版本中,它会在我将鼠标移出“table” div时更新,但如果在悬停“cell” div边框时隐藏了工具提示,则不会更新。
我已经尝试通过向元素/其父元素/主体添加/删除其他类、编辑/访问样式属性等强制触发重绘,所以我想这不是普通的重绘问题。
是否有JS黑客可解决此问题并强制:before/:after更新?