기록은 기억을 이기고 시간보다 오래 남는다.

FRONT-END

DOM(Document Object Model): 웹 페이지를 동적으로 조작하는 핵심 개념

준_준 2024. 11. 6. 17:22

 


DOM이란 무엇인가?

DOM은 Document Object Model의 약자로, 웹 페이지의 HTML이나 XML 문서를 트리 구조의 객체로 표현한 모델입니다. 브라우저는 HTML 문서를 로드한 후 이를 파싱하여 메모리에 적재하고, 이 구조를 통해 웹 페이지의 내용과 스타일을 동적으로 수정할 수 있게 해줍니다. DOM을 사용하면 웹 페이지의 요소를 자바스크립트로 조작하여 페이지를 실시간으로 변경할 수 있습니다.

DOM의 구조: 트리 형식의 객체 모델

DOM은 트리 구조로 표현됩니다. 이 트리의 최상위 노드는 <html> 요소이며, 그 아래로 <head>, <body>, <div>, <p> 등 다양한 HTML 요소들이 계층적인 관계를 형성합니다. 각 HTML 요소는 노드(Node)라는 객체로 변환되어 트리 구조에 배치됩니다.

  • HTML 요소는 DOM 트리에서 엘리먼트 노드로 변환됩니다.
  • HTML 속성애트리뷰트 노드로 변환됩니다.
  • 텍스트텍스트 노드로 변환됩니다.

이처럼, DOM은 HTML 문서를 프로그램에서 사용할 수 있는 객체 지향적 모델로 변환하여 자바스크립트로 다룰 수 있게 만듭니다.


DOM과 자바스크립트: 동적 웹 페이지 구현

DOM은 자바스크립트와 함께 사용되어 웹 페이지를 동적으로 변경하는 데 핵심적인 역할을 합니다. 자바스크립트를 사용하면 DOM에 접근하여 다음과 같은 작업을 할 수 있습니다:

  • HTML 요소 추가, 수정, 삭제
  • 요소의 속성 수정 (예: class, id, style 속성)
  • 이벤트 리스너 등록 (클릭, 마우스오버 등)

예를 들어, 자바스크립트를 사용하여 페이지가 로드될 때 새로운 <h1> 요소를 생성하고, 이를 웹 페이지의 <body>에 추가할 수 있습니다.

 
 
<script>
  window.onload = function() {
    var heading = document.createElement("h1");
    var text = document.createTextNode("Welcome to my website!");
    heading.appendChild(text);
    document.body.appendChild(heading);
  };
</script>
 

위의 코드는 자바스크립트를 사용하여 웹 페이지에 동적으로 제목을 추가하는 방법을 보여줍니다. 이렇게 DOM을 수정함으로써, 페이지는 동적이고 상호작용적인 요소를 갖추게 됩니다.


HTML -> DOM, CSS -> CSSOM, Render Tree

웹 페이지가 브라우저에서 어떻게 렌더링되는지 이해하는 것은 매우 중요합니다. DOM은 HTML을 트리 구조로 변환하지만, CSS도 웹 페이지 렌더링에 중요한 역할을 합니다. CSS는 **CSSOM (CSS Object Model)**으로 변환되어, 각 HTML 요소에 적용되는 스타일을 정의합니다.

  1. DOM: HTML 문서를 트리 구조로 표현한 객체 모델
  2. CSSOM: CSS 스타일 시트를 트리 구조로 표현한 객체 모델

이 둘은 결합되어 **렌더 트리(Render Tree)**를 형성합니다. 렌더 트리는 화면에 표시되어야 하는 요소만 포함하고, display: none으로 숨겨진 요소는 제외됩니다. 브라우저는 렌더 트리를 기반으로 각 요소의 크기위치를 계산한 뒤, 최종적으로 화면에 렌더링합니다.

렌더링 과정:

  1. HTML -> DOM 트리
  2. CSS -> CSSOM 트리
  3. DOMCSSOM 결합 -> Render Tree
  4. 렌더 트리를 바탕으로 위치크기 계산 후, 화면에 표시

DOM의 중요성: 웹 페이지의 동적 조작

DOM은 웹 페이지의 모든 요소를 동적으로 조작할 수 있게 해주는 중요한 도구입니다. DOM을 통해 웹 페이지를 실시간으로 업데이트하거나, 사용자의 입력에 따라 다양한 상호작용을 구현할 수 있습니다.

예를 들어, 사용자가 버튼을 클릭하면 페이지의 스타일을 변경하거나, 새로운 콘텐츠를 추가하는 등의 동적 변화를 구현할 수 있습니다. 자바스크립트와 DOM은 상호작용을 가능하게 하고, 사용자 경험을 향상시킵니다.

DOM을 이해하는 비유: 자바스크립트가 조작하는 '관절 인형'

DOM은 자바스크립트가 움직일 수 있는 관절 인형과 같습니다. 자바스크립트는 DOM을 통해 웹 페이지의 각 요소를 마치 인형처럼 조작하여 페이지의 구조와 내용을 변경합니다. 이 과정을 통해 웹 페이지는 동적이고 인터랙티브한 형태로 변화합니다.


DOM과 함께 사용하는 주요 메서드와 프로퍼티

웹 개발에서 자주 사용되는 DOM 메서드와 프로퍼티는 다음과 같습니다:

  • document.getElementById(id): 특정 id를 가진 요소를 찾습니다.
  • document.getElementsByTagName(name): 특정 태그명을 가진 요소를 찾습니다.
  • document.createElement(tagName): 새로운 HTML 요소를 생성합니다.
  • element.setAttribute(attributeName, value): 요소의 속성을 설정합니다.
  • element.addEventListener(event, function): 이벤트 리스너를 추가합니다.

결론: DOM은 웹 개발의 핵심

DOM은 웹 페이지의 모든 요소를 동적으로 조작할 수 있게 해주는 핵심 인터페이스입니다. 자바스크립트와 함께 사용하여 HTML 문서의 구조를 실시간으로 수정하고, 스타일을 적용하며, 상호작용을 구현할 수 있습니다. 웹 페이지는 단순히 HTML로 구성된 문서가 아니라, DOM을 통해 동적으로 변화할 수 있는 생동감 있는 콘텐츠가 됩니다.

DOM을 이해하고 활용하는 것은 웹 개발의 기본이며, 현대적인 웹 페이지의 인터랙티브함을 구현하는 핵심 요소입니다.

  • DOM은 웹 페이지의 HTML 요소 동적으로 조작할 수 있게 해주는 객체 모델입니다.
  • DOM 트리 HTML 문서 객체로 변환하여 자바스크립트에서 조작할 수 있게 합니다.
  • CSSOM과 결합하여 렌더 트리를 생성하고, 브라우저는 이 트리를 기반으로 화면을 렌더링합니다.
  • DOM을 통해 웹 페이지의 동적 변경 상호작용을 구현할 수 있습니다.

[출처]
https://developer.mozilla.org/ko/docs/Web/API/Document_Object_Model/Introduction

반응형