首页 > web前端 > js教程 > 如何在 Chrome/Mac 上强制 DOM 重绘?

如何在 Chrome/Mac 上强制 DOM 重绘?

Mary-Kate Olsen
发布: 2024-11-29 05:02:13
原创
276 人浏览过

How to Force a DOM Redraw on Chrome/Mac?

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);
登录后复制

此方法介绍元素边框的可见更改,迫使浏览器重绘。需要超时以确保重绘在边框返回到原始状态之前发生。

其他选项

强制重绘的其他方法包括:

  • 使用隐藏然后取消隐藏父元素jQuery:
$('#parentOfElementToBeRedrawn').hide().show(0);
登录后复制
  • 将空文本节点插入到元素中:
var forceRedraw = function(element) {
    ...
}
登录后复制

这些方法确保更直接的重绘,而不涉及 CSS 操作。

以上是如何在 Chrome/Mac 上强制 DOM 重绘?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板