Chrome/Mac 上的强制 DOM 重绘
当 Mac 上的 Chrome 遇到渲染问题时,触发重绘的传统方法会因优化而失败在浏览器中实现。本文探讨了一种替代方法,利用父元素的可见性操作来强制重绘,而不依赖于 offsetHeight 属性。
重绘的常见技巧
在其他浏览器组合中,以下 hack 有效地触发了重绘:
el.style.cssText += ';-webkit-transform:rotateZ(0deg)' el.offsetHeight el.style.cssText += ';-webkit-transform:none'
通过修改未使用的 CSS 属性,然后请求强制重新计算的信息(如元素的高度),最后恢复原始属性,实现重绘。
Chrome/Mac 优化
不幸的是,Chrome在 Mac 上,通过检索 offsetHeight 而不触发重绘。
替代重绘黑客
要在 Chrome/Mac 上强制重绘,建议使用以下解决方案:
$(el).css("border", "solid 1px transparent"); setTimeout(function() { $(el).css("border", "solid 0px transparent"); }, 1000);
此方法介绍元素边框的可见更改,迫使浏览器重绘。需要超时以确保重绘在边框返回到原始状态之前发生。
其他选项
强制重绘的其他方法包括:
$('#parentOfElementToBeRedrawn').hide().show(0);
var forceRedraw = function(element) { ... }
这些方法确保更直接的重绘,而不涉及 CSS 操作。
以上是如何在 Chrome/Mac 上强制 DOM 重绘?的详细内容。更多信息请关注PHP中文网其他相关文章!