외부 스타일 지정을 위한 part 및 exportparts
part와 exportparts로 shadow DOM의 일부를 외부 CSS에 노출하기
외부 스타일 지정을 위한 part 및 exportparts은(는) CoddyKit의 무료 HTML Academy 강의입니다. 이것은 4개 중 4번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 HTML Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. HTML Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
캡슐화의 절충점
섀도 DOM의 엄격한 스타일 캡슐화는 사용자가 구성 요소 내부의 개별 요소 스타일을 다시 지정하지 못하게 합니다. CSS 변수는 전역 속성에는 사용할 수 있지만, 예를 들어 내부의 "닫기" 버튼에 사용자 지정 border-radius를 지정할 수는 없습니다. 파트가 이 문제를 해결합니다.
part 특성
섀도 내부 요소에 part="name"을 표시하십시오. 그러면 사용자가 ::part(name) 의사 요소로 해당 요소를 대상으로 지정할 수 있습니다: my-dialog::part(close-button) { color: red; }. 이름이 지정된 요소는 스타일 지정 지점이 되고 나머지 섀도 트리는 캡슐화된 상태로 유지됩니다.
// Shadow tree:
<button part="close-button">×</button>
// Page CSS:
my-dialog::part(close-button) {
color: red;
border-radius: 50%;
}한 요소에 여러 파트
이름을 공백으로 구분하면 하나의 요소를 여러 파트로 노출할 수 있습니다: part="button primary". ::part(button)은 해당 요소를 일반적으로 대상으로 지정하고, ::part(primary)는 기본 스타일 요소로 대상으로 지정합니다. 각 이름은 독립적으로 일치합니다.
::part의 제한 사항
::part는 특정 의사 클래스(:hover, :focus, :disabled)만 허용하며, 하위 결합자나 추가 구조 선택은 허용하지 않습니다. ::part(card) p는 유효하지 않으며, 하위 선택자로 파트 내부에 접근할 수 없습니다.
exportparts로 파트 전달
사용자 지정 요소가 자체 섀도 안에 다른 사용자 지정 요소를 중첩하면 내부 요소의 파트는 일반적으로 외부 페이지에 노출되지 않습니다. 중첩된 요소에 exportparts="close-button"을 지정하면 해당 파트를 외부 호스트로 전달할 수 있습니다.
// Outer shadow:
<inner-element exportparts="close-button"></inner-element>
// Page:
outer-element::part(close-button) { color: red; }내보낼 때 이름 바꾸기
exportparts="close-button: dismiss"는 내부 파트를 외부 요소에서 사용할 새 이름으로 내보냅니다. 이를 통해 외부 구성 요소는 내부에서 어떤 요소를 조합하는지와 관계없이 깔끔한 이름 지정 표면을 제공할 수 있습니다.
파트와 CSS 사용자 지정 속성 비교
사용자 지정 속성은 값(색상, 간격, 글꼴)을 노출합니다. 파트는 요소를 노출하며 CSS의 전체 스타일 지정 범위(테두리, 변환, 애니메이션)를 제공합니다. 전역 토큰에는 사용자 지정 속성을 사용하고, 개별 요소 수준의 사용자 지정에는 파트를 사용하십시오. 두 방법은 같은 구성 요소에서 함께 사용할 수 있습니다.
테마 지정 패턴
디자인 시스템에서는 가장 많이 사용자 지정되는 요소(버튼, 헤더, 표시기)에 사용할 소수의 파트와 색상, 간격, 타이포그래피를 위한 충분한 사용자 지정 속성을 노출하는 방식을 사용합니다. 사용자는 필요에 따라 값 수준이나 요소 수준에서 테마를 지정할 수 있습니다.
파트 이름의 안정성
파트 이름은 구성 요소의 공개 API 일부가 되므로 이름을 변경하면 사용자의 CSS가 깨집니다. API가 구현이 발전해도 의미를 유지하도록 위치("first-button")가 아니라 요소의 역할("close-button", "header", "track")을 설명하는 이름을 선택하십시오.
문서화 팁
사용 가능한 모든 파트와 내보낸 파트를 구성 요소의 README에 나열하십시오. 문서가 없으면 사용자는 파트를 찾기 위해 DOM을 검사해야 하며, 이는 우연히 발견한 요소에 사용자를 결합시킵니다. 파트 목록을 프레임워크 구성 요소의 속성 목록처럼 취급하십시오.
브라우저 지원
::part와 exportparts는 모든 최신 브라우저에서 제공됩니다. 이전 버전의 Safari도 이제 ::part를 지원합니다. 자유롭게 사용하십시오. 매우 오래된 브라우저(대부분 현재 사용되지 않음)에서는 추가 CSS 사용자 지정 속성을 대체 수단으로 사용하십시오.
지식 확인
exportparts 특성은 어떤 기능을 합니까?
요약
part 특성은 ::part(name)을 통해 개별 섀도 요소를 외부 스타일 지정 대상으로 노출하여 캡슐화를 해치지 않고 CSS의 모든 스타일 지정 기능을 사용할 수 있게 합니다. exportparts는 중첩된 사용자 지정 요소의 파트를 외부 호스트로 전달하고 선택적으로 이름을 바꿉니다. 완전한 테마 지정 표면을 구성하려면 파트와 CSS 사용자 지정 속성을 함께 사용하고, 구성 요소 API의 일부로 파트 목록을 문서화하십시오.
자주 묻는 질문
“외부 스타일 지정을 위한 part 및 exportparts” 강의는 무료인가요?
네 — “외부 스타일 지정을 위한 part 및 exportparts” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 HTML Academy 강의 전체를 잠금 해제할 수 있습니다. HTML Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
“외부 스타일 지정을 위한 part 및 exportparts”에서 뭘 배우나요?
part와 exportparts로 shadow DOM의 일부를 외부 CSS에 노출하기 브라우저에서 직접 실행하는 실습 코드로 HTML Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
HTML Academy을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 HTML Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 4번째 강의입니다.
“외부 스타일 지정을 위한 part 및 exportparts” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 HTML Academy 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 HTML Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- attachShadow 및 Shadow Root
- 콘텐츠 배포를 위한 slot 요소
- Shadow DOM 내부의 범위 지정 스타일
- 외부 스타일 지정을 위한 part 및 exportparts