아카이브사이트맵
© 2026 Rayon. All rights reserved.
DevDay
아티클랭킹스페이스채용
인프런 favicon인프런

Shadow DOM으로 스타일 충돌을 해결하는 방법

by DD
2022-08-31
3년 전
조회수 6

Bulma 기반 기존 서비스와 React 기반 신규 웹앱 간의 스타일 충돌 발생

Shadow DOM을 활용하여 스타일 격리 및 스타일 충돌 문제 해결 시도

Emotion cache 및 React Portal 설정을 통해 스타일 적용 및 레이아웃 문제 해결

Shadow DOM의 기본 원리

Shadow DOM은 웹 컴포넌트의 핵심 기술로, DOM 트리를 캡슐화하여 스타일과 마크업을 격리한다. 구체적으로 Shadow host에 Shadow tree를 부착하여 외부 스타일의 간섭을 막는다. 따라서 스타일 충돌 방지 및 컴포넌트 재사용성을 높인다.

Emotion Cache를 이용한 스타일 적용

React 앱에서 Emotion 스타일을 Shadow DOM에 적용하기 위해 emotion cache를 활용한다. 구체적으로, createCache 함수로 캐시 인스턴스를 생성하고, StyleProvider를 통해 스타일을 주입한다. 따라서 스타일 태그 이동을 통해 Shadow DOM 내부에서 스타일을 적용한다.

React Portal 타겟 설정

React Portal을 사용하는 컴포넌트의 경우, Shadow DOM 내부에 렌더링되도록 타겟을 설정해야 한다. 구체적으로, ThemeProvider를 사용하여 portal의 타겟을 Shadow DOM으로 지정한다. 결과적으로 레이아웃 문제를 해결하고, 스타일이 정상적으로 적용되도록 한다.

shadow DOM으로 신규 프로젝트의 스타일을 지키는 방법
중급
아키텍처
React
Shadow DOM
Emotion
JavaScript
Frontend
원문 읽기
원문 읽기

댓글 0

첫 번째 댓글을 남겨보세요!

관련 추천 글

Shadow DOM, Tailwind, shadcn/ui 조합, 득보다 실이 많다!

데브투 로고

React Conf 2025: React 19, React Native 0.82, React Compiler v1.0 발표!

리액트 로고

ChatGPT, 봇 감지를 위해 React 앱 상태까지 확인한다!

해커뉴스 로고

React useGesture 훅 설계: 부드러운 UI/UX를 위한 제스처 처리 기술

벨로그 로고

주니어 개발자, 자바스크립트(JavaScript) 기본기, 여전히 중요할까?

데브투 로고

Bun으로 JavaScript 개발 속도 UP!

파이어쉽 로고
인프런 favicon인프런
중급
아키텍처
React
Shadow DOM
Emotion
JavaScript
Frontend

관련 추천 글

Shadow DOM, Tailwind, shadcn/ui 조합, 득보다 실이 많다!

데브투 로고

React Conf 2025: React 19, React Native 0.82, React Compiler v1.0 발표!

리액트 로고

ChatGPT, 봇 감지를 위해 React 앱 상태까지 확인한다!

해커뉴스 로고