> 웹 프론트엔드 > CSS 튜토리얼 > macOS의 Chrome에서 DOM 다시 그리기를 안정적으로 강제하는 방법은 무엇입니까?

macOS의 Chrome에서 DOM 다시 그리기를 안정적으로 강제하는 방법은 무엇입니까?

Mary-Kate Olsen
풀어 주다: 2024-12-26 21:10:15
원래의
819명이 탐색했습니다.

How to Reliably Force a DOM Redraw in Chrome on macOS?

Chrome/Mac에서 강제 DOM 다시 그리기: 렌더링 문제에 대한 솔루션

특정 상황에서 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);
}
로그인 후 복사

이 기술은 시각적인 점프 없이 다시 그릴 수 있습니다. 표시 속성을 수정하고 텍스트 노드를 삽입하면 DOM이 리플로우되고 요소가 정확하게 표시됩니다.

위 내용은 macOS의 Chrome에서 DOM 다시 그리기를 안정적으로 강제하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿