<webui-disclosure data-bind-click-outside="" data-bind-escape-key=""> Show / Hide <div data-content=""> <p>Content to be shown/hidden.</p> </div> </webui-disclosure>JavaScript가 비활성화 된 경우
및 data-attribute
로 처리됩니다. 기본 기능에 필수적인 것은 아니지만 JavaScript는 UX 및 접근성을 향상시킵니다. 이것은 점진적인 향상을 보여줍니다. 추가 CSS가 필요하지 않습니다. 스타일링은 상속됩니다.
customElements.define('webui-disclosure', WebUIDisclosure);
CSS가 캡슐화됩니다
<my-component></my-component>
로 구분되어 충돌을 방지합니다. 간단한 자손 선택기는 BEM과 같은 복잡한 방법론을 대체 할 수 있습니다
class WebUIDisclosure extends HTMLElement { constructor() { super(); this.trigger = this.querySelector('[data-trigger]'); this.content = this.querySelector('[data-content]'); this.bindEscapeKey = this.hasAttribute('data-bind-escape-key'); this.bindClickOutside = this.hasAttribute('data-bind-click-outside'); if (!this.trigger || !this.content) return; this.setupA11y(); this.trigger?.addEventListener('click', this); } setupA11y() { // Add ARIA props/state to button. } handleEvent(e) { // 1. Toggle visibility of content. // 2. Toggle ARIA expanded state on button. } connectedCallback() { document.addEventListener('keyup', (e) => { // Handle ESC key. }); document.addEventListener('click', (e) => { // Handle clicking outside. }); } disconnectedCallback() { // Remove event listeners. } }"light "dom (구성 요소 태그 사이의 내용)은 글로벌 스타일을 상속합니다. Shadow Dom은 내부 스타일이 필요합니다. Dave Rupert의 기사는 외부 스타일이 Shadow Dom과 어떻게 상호 작용하는지 설명합니다.
constructor()
connectedCallback()
aria-expanded
aria-controls
속성은 pseudo-selector를 사용하여 구성 요소 외부에서 svg를 스타일링 할 수있게합니다.
<webui-disclosure data-bind-click-outside="" data-bind-escape-key=""> Show / Hide <div data-content=""> <p>Content to be shown/hidden.</p> </div> </webui-disclosure>
결론
위 내용은 HTML 웹 구성 요소는 점진적 향상 및 CSS 캡슐화가 더 쉬워집니다!의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!