使用JavaScript强制IE“重绘”元素以修复CSS错误?

8

我遇到了一个IE浏览器的bug。在IE9中,对于页面加载时隐藏的元素(例如选项卡),CSS计数器属性不起作用。

css counter not working in internet explorer for hidden content - how to fix?

如上所述,我已经能够通过使用JavaScript设置一些内联CSS来解决这个问题。当元素被显示时,我将padding-left设置为0(即使该元素已经没有左边缘填充)。这使IE“重新绘制”该元素,然后正确地应用CSS。

然而,这并不是一个理想的解决方案。如果设计更改以在元素上具有左填充,则我的JavaScript修复程序将破坏布局。我可以使用什么其他方法来使IE“重新绘制”该元素?是否有一种标准的方法来完成这个操作?


我可以做这个,但是我不想有任何“闪烁”作为内容样式的改变。只有IE9存在这个问题(我没有在旧版本的IE上进行测试)。 - Evanss
如果样式没有任何东西,就不会有闪光。 - epascarello
1个回答

8

保罗·艾瑞什为您编写了一份清单

哪些因素会导致页面重新布局及渲染:全面列表

当在JavaScript中请求或调用[此链接中的属性或方法]时,浏览器会同步计算样式和布局*。这也被称为重新布局或布局抖动,并且是常见的性能瓶颈。

我不想在此处发布整个列表以避免剽窃,因为本质上我没有为答案添加任何内容;我只是指向它。

然而,保罗·艾瑞什警告说,使用这些功能“常常会影响性能”,但可以有针对性地使用它们来强制执行所需的页面重新布局及渲染。这在特定于某个浏览器的情况下尤其有用。

如果您想将重新布局限制在仅适用于IE9的范围内,则需要在特性检测检查中包装您的布局抖动调用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接