[javascript] 그림자 DOM(Shadow DOM)을 이용한 스타일을 캡슐화하는 방법

그림자 DOM은 웹 컴포넌트의 핵심 기술 중 하나로, 스타일을 캡슐화하여 독립적인 스타일링을 가능하게 합니다. 이 기술은 웹 개발자가 작성한 스타일이 다른 컴포넌트에 영향을 주지 않고 독립적으로 동작할 수 있게 해주는 강력한 도구입니다.

그림자 DOM이란?

그림자 DOM은 일종의 가상 DOM으로, 기존의 DOM 트리와 별개로 생성됩니다. 그림자 DOM 안에서는 독립적으로 스타일이 적용되며, 외부에서의 접근이 제한됩니다. 이를 통해 웹 컴포넌트의 스타일링을 완벽하게 캡슐화할 수 있습니다.

그림자 DOM을 사용한 스타일 캡슐화 방법

그림자 DOM을 사용하려면 attachShadow 메소드를 이용하여 요소에 그림자 DOM을 추가해야 합니다. 아래는 간단한 예제 코드입니다.

const element = document.createElement('div');
const shadowRoot = element.attachShadow({ mode: 'open' });

// 그림자 DOM 안에 스타일 요소를 추가합니다.
const styleElement = document.createElement('style');
styleElement.textContent = `
  /* 스타일 코드 */
`;
shadowRoot.appendChild(styleElement);

// 그림자 DOM 안에 컨텐츠를 추가합니다.
const contentElement = document.createElement('div');
contentElement.textContent = 'Hello, Shadow DOM!';
shadowRoot.appendChild(contentElement);

// 실제로는 그림자 DOM이 적용된 요소를 페이지에 추가합니다.
document.body.appendChild(element);

위의 코드는 div 요소에 그림자 DOM을 추가하고, 그림자 DOM 안에 스타일과 컨텐츠를 정의하는 방법을 보여줍니다. 이렇게 정의된 그림자 DOM은 외부에서의 접근이 불가능하며, 독립적으로 스타일링 및 동작합니다.

그림자 DOM의 장점

그림자 DOM을 사용하는 것에는 몇 가지 장점이 있습니다.

결론

그림자 DOM은 웹 컴포넌트의 스타일링을 캡슐화하고 독립적인 동작을 가능하게 해주는 강력한 기술입니다. 그림자 DOM을 적용하여 컴포넌트의 스타일을 다른 요소에 영향을 주지 않고 관리할 수 있으며, 코드의 재사용성과 유지보수성을 향상시킬 수 있습니다.

더 자세한 내용은 MDN에서 확인할 수 있습니다.