在某些情況下,Mac 上的Chrome 可能無法正確渲染HTML/CSS ,儘管有標記有效性。常見的解決方案包括修改 CSS 屬性並檢索 offsetHeight 以強制重繪。但是,此方法在 Chrome/Mac 中不再有效。
為了解決此問題, Chrome/Mac 上有效的替代方法涉及暫時更改有問題元素的邊框:
$(el).css("border", "solid 1px transparent"); setTimeout(function() { $(el).css("border", "solid 0px transparent"); }, 1000);
這會強制元素重新定位,確保重繪。然而,缺點是涉及延遲,這可能會分散視覺注意力。
更可靠的方法是在元素中插入一個空文本節點:
var forceRedraw = function(element){ if (!element) { return; } var n = document.createTextNode(' '); var disp = element.style.display; element.appendChild(n); element.style.display = 'none'; setTimeout(function(){ element.style.display = disp; n.parentNode.removeChild(n); },20); }
此技術保證無需視覺跳躍即可重繪。透過修改display屬性,插入文字節點,觸發DOM重排,精確顯示元素。
以上是如何在 macOS 上的 Chrome 中可靠地強制 DOM 重繪?的詳細內容。更多資訊請關注PHP中文網其他相關文章!