>웹 프론트엔드 >CSS 튜토리얼 >'offsetWidth', 'clientWidth', 'scrollWidth'(및 해당 높이)의 차이점은 무엇입니까?

'offsetWidth', 'clientWidth', 'scrollWidth'(및 해당 높이)의 차이점은 무엇입니까?

Barbara Streisand
Barbara Streisand원래의
2024-12-27 09:19:13378검색

What's the Difference Between `offsetWidth`, `clientWidth`, and `scrollWidth` (and Their Height Counterparts)?

offsetWidth, clientWidth, scrollWidth 및 해당 높이 대응 요소 이해

StackOverflow에 대한 수많은 문의와 혼란스럽거나 부정확한 온라인 정보에도 불구하고 복잡한 내용을 이해 offsetWidth, clientWidth, scrollWidth 및 해당 높이 여전히 어려운 문제입니다.

정의 및 시각 자료:

  • offsetWidth, offsetHeight: 요소 시각적 상자의 너비와 높이를 나타냅니다. , 테두리 포함. 너비/높이, 패딩 및 테두리를 합산하여 계산할 수 있습니다(디스플레이: 블록이 있는 요소의 경우).
  • clientWidth, clientHeight: 요소 내 콘텐츠의 표시되는 부분을 나타냅니다. 테두리와 스크롤바(패딩 포함). CSS에서 직접 파생될 수 없으며 시스템의 스크롤 막대 크기에 따라 다릅니다.
  • scrollWidth, scrollHeight: 스크롤 영역 외부의 숨겨진 부분을 포함하여 요소 콘텐츠의 전체 크기를 나타냅니다. 또한 콘텐츠에 따라 달라지며 CSS에서 직접 계산할 수 없습니다.

[레이블이 지정된 크기가 있는 CSS2 상자 모델의 시각적 자료]

스크롤 막대 너비 계산:

offsetWidth에는 스크롤바 너비가 포함되므로 다음을 사용하여 계산할 수 있습니다. 공식:

scrollbarWidth = offsetWidth - clientWidth - getComputedStyle().borderLeftWidth - getComputedStyle().borderRightWidth

그러나 이 방법은 offsetWidth 및 clientWidth의 정수 특성으로 인해 반올림 오류가 발생할 수 있으며, 이는 1 이외의 확대/축소 수준에서 실제 분수 치수를 반영하지 않을 수 있습니다.

추가 고려 사항:

다음 사항에 유의하세요. 공식:

scrollbarWidth = getComputedStyle().width + getComputedStyle().paddingLeft + getComputedStyle().paddingRight - clientWidth

Chrome은 보고된 너비에서 스크롤 막대 너비를 빼므로 Chrome에서 신뢰할 수 있는 결과를 제공하지 않습니다. 또한 Chrome은 다른 브라우저와 달리 스크롤 콘텐츠 하단에 paddingBottom을 렌더링합니다.

위 내용은 'offsetWidth', 'clientWidth', 'scrollWidth'(및 해당 높이)의 차이점은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.