การจัดสไตล์ Web Components
CSS ที่อยู่ภายใน shadow root จะถูก scope อย่างสมบูรณ์ — สไตล์ของหน้าไม่รั่วเข้าไป และสไตล์ของ shadow ก็ไม่รั่วออกมา แต่มีกลไกสามอย่างที่ข้ามขอบเขตนี้โดยตั้งใจ ได้แก่ selectors :host / ::slotted / ::part และ CSS custom properties การเข้าใจว่า rule ใดถูกแยกออกและ rule ใดทะลุผ่าน shadow boundary โดยตั้งใจ คือรากฐานของการทำ theming ให้ web component อย่างมั่นคง
flowchart LR
subgraph Page
PA[".btn color red"]
PB["::part(label)"]
PC["--theme-color blue"]
end
subgraph Shadow
SA[":host styles"]
SB["::slotted(span)"]
SC["var(--theme-color)"]
SD["internal .btn"]
end
PA -. "blocked" .-> SD
PB --> SC
PC --> SC
โมดูลนี้ครอบคลุมสี่หัวข้อที่เมื่อรวมกันแล้วจะทำให้คุณควบคุมการจัดสไตล์ shadow DOM ได้อย่างสมบูรณ์:
- selectors
:host— จัดสไตล์ตัว custom element เองจากภายใน shadow root ::slotted— กำหนดเป้าหมาย children ใน light DOM ที่ตกลงไปอยู่ใน slot::partและexportparts— เปิดเผย internals ที่ตั้งชื่อไว้เพื่อให้ CSS ของหน้าจัดสไตล์ได้- CSS custom properties และ Constructable Stylesheets — วิธี theming ที่ยืดหยุ่นที่สุด