웹 구성 요소 내에서 HTML 요소를 캡슐화하기 위해 Shadow Dom을 사용하려면 다음을 수행해야합니다.
웹 구성 요소 정의 : customElements.define
메소드를 사용하여 사용자 정의 HTML 요소를 작성하여 시작하십시오. 예를 들어:
<code class="javascript">class MyComponent extends HTMLElement { constructor() { super(); this.attachShadow({ mode: 'open' }); this.shadowRoot.innerHTML = ` <style> /* Component-specific styles go here */ </style> <div> <slot></slot> </div> `; } } customElements.define('my-component', MyComponent);</code>
이 예에서 MyComponent
인스턴스화 할 때 그림자 Dom을 그 자체로 첨부하는 사용자 정의 요소입니다. mode
'열기'또는 '닫는'일 수 있습니다. 'Open'모드는 외부에서 그림자 DOM에 프로그래밍 방식으로 액세스 할 수있는 반면 '닫힌'모드는 이러한 액세스를 제한합니다.
attachShadow
메소드는 사용자 정의 요소의 생성자 내에서 Shadow Dom을 요소에 첨부하기 위해 사용됩니다. mode
'열기'또는 '닫는'으로 설정할 수 있습니다.this.shadowRoot
조작하여 컨텐츠를 추가 할 수 있습니다. 위의 예에서, innerHTML
HTML 및 CSS를 그림자 DOM에 직접 주입하는 데 사용됩니다.웹 구성 요소 사용 : HTML에서 새로 정의 된 웹 구성 요소를 사용할 수 있습니다.
<code class="html"><my-component> <p>This is a slotted content!</p> </my-component></code>
Shadow Dom 내의 <slot></slot>
요소는 <my-component></my-component>
태그 내의 내용이 렌더링되는 자리 표시 자 역할을합니다.
이 단계를 수행함으로써 나머지 웹 페이지와 독립적으로 관리 및 스타일을 관리 할 수있는 Shadow Dom 내에서 HTML 요소를 효과적으로 캡슐화합니다.
웹 구성 요소에서 HTML 캡슐화에 Shadow Dom을 사용하면 몇 가지 중요한 이점이 있습니다.
웹 구성 요소의 Shadow Dom 내에서 요소를 스타일링하려면 다음을 수행 할 수 있습니다.
내부 스타일 : Shadow Dom 내에 <style></style>
태그를 포함시킬 수 있습니다. 여기에 정의 된 스타일은 Shadow Dom에만 범위를 지정하며 나머지 문서에 영향을 미치지 않습니다. 예는 다음과 같습니다.
<code class="javascript">this.shadowRoot.innerHTML = ` <style> .my-class { color: blue; } </style> <div class="my-class">Styled content</div> `;</code>
CSS 사용자 정의 속성 : CSS 사용자 정의 속성 (변수)을 사용하여 캡슐화를 유지하는 동안 구성 요소 외부에서 스타일을 적용 할 수 있습니다. 예를 들어:
<code class="javascript">this.shadowRoot.innerHTML = ` <style> .my-class { color: var(--my-color, blue); } </style> <div class="my-class">Styled content</div> `;</code>
그런 다음 메인 문서의 사용자 정의 요소에서 --my-color
설정할 수 있습니다.
<code class="html"><my-component style="--my-color: red;"></my-component></code>
CSS 부품 : ::part
pseudo element를 사용하면 외부 스타일을위한 특정 요소를 노출시킬 수 있습니다. 다음과 같이 구성 요소를 정의하십시오.
<code class="javascript">this.shadowRoot.innerHTML = ` <style> .my-class { color: blue; } </style> <div part="content" class="my-class">Styled content</div> `;</code>
그런 다음 외부에서 스타일을 지정하십시오.
<code class="css">my-component::part(content) { color: red; }</code>
웹 구성 요소에서 Shadow Dom을 구현할 때는 다음과 같은 일반적인 함정을 염두에 두십시오.
<slot></slot>
요소를 올바르게 사용하는 것이 중요합니다. 잘못 사용하면 예기치 않은 동작 및 레이아웃 문제가 발생할 수 있습니다.이러한 함정을 피하면 웹 구성 요소에서 Shadow Dom의 이점을 최대화하고보다 강력하고 유지 관리 가능한 응용 프로그램을 만들 수 있습니다.
위 내용은 Shadow Dom을 사용하여 HTML 요소 (웹 구성 요소)를 캡슐화하려면 어떻게합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!