在 Chrome for Mac 中强制 DOM 重绘/刷新
当 Chrome for Mac 遇到有效的 HTML/CSS 时,有时会错误地渲染元素,或者一点也不。虽然在浏览器控制台中检查 DOM 通常会触发重绘,但需要更自动化的解决方案。
以下 JS 片段在大多数浏览器和操作系统中都有效:
el.style.cssText += ';-webkit-transform:rotateZ(0deg)' el.offsetHeight el.style.cssText += ';-webkit-transform:none'
但是, Mac 版 Chrome 绕过 offsetHeight 触发的重绘。解决方法是使用 setTimeout 临时更改元素的边框,强制重绘:
$(el).css("border", "solid 1px transparent"); setTimeout(function() { $(el).css("border", "solid 0px transparent"); }, 1000);
这种方法很麻烦且引人注目。在 Chrome for Mac 上强制重绘的更有效方法是在元素中插入一个空文本节点:
var forceRedraw = function(element){ if (!element) { return; } var n = document.createTextNode(' '); var disp = element.style.display; // don't worry about previous display style element.appendChild(n); element.style.display = 'none'; setTimeout(function(){ element.style.display = disp; n.parentNode.removeChild(n); },20); // you can play with this timeout to make it as short as possible }
这种方法可以保证重绘,并且比边框方法更高效。
以上是如何在 Mac 版 Chrome 中强制 DOM 重绘/刷新?的详细内容。更多信息请关注PHP中文网其他相关文章!