0Pricing
HTML Academy · Lekcja

Part i exportparts do stylizacji zewnętrznej

Udostępnianie części shadow DOM zewnętrznemu CSS za pomocą part i exportparts

Part i exportparts do stylizacji zewnętrznej to bezpłatna lekcja HTML Academy na CoddyKit. To lekcja 4 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej HTML Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs HTML Academy zawiera 4 lekcji w sumie.

Kompromis związany z hermetyzacją

Ścisła hermetyzacja stylów Shadow DOM uniemożliwia użytkownikom ponowne stylowanie pojedynczych elementów wewnątrz komponentu. Zmienne CSS sprawdzają się w przypadku globalnych właściwości, ale nie można na przykład nadać wewnętrznemu przyciskowi "close" niestandardowego border-radius. Rozwiązaniem są parts.

Atrybut part

Element wewnętrzny shadow DOM należy oznaczyć za pomocą part="name". Użytkownicy mogą następnie wskazywać go za pomocą pseudoelementu ::part(name): my-dialog::part(close-button) { color: red; }. Nazwany element staje się punktem stylowania, podczas gdy reszta shadow DOM pozostaje hermetyczna.

// Shadow tree:
<button part="close-button">×</button>
// Page CSS:
my-dialog::part(close-button) {
  color: red;
  border-radius: 50%;
}

Wiele parts na jednym elemencie

Aby udostępnić jeden element jako wiele parts, należy rozdzielić ich nazwy spacjami: part="button primary". ::part(button) wskazuje go ogólnie, a ::part(primary) — jako element w stylu głównym. Każda nazwa jest dopasowywana niezależnie.

Ograniczenia ::part

::part pozwala używać tylko niektórych pseudoklas (:hover, :focus, :disabled) — nie pozwala natomiast używać kombinatorów potomstwa ani dalszego wyboru strukturalnego. ::part(card) p jest nieprawidłowe; nie można dostać się do wnętrza part za pomocą selektorów potomstwa.

exportparts przekazuje parts dalej

Gdy element niestandardowy umieszcza wewnątrz własnego shadow DOM inny element niestandardowy, parts elementu wewnętrznego nie są normalnie udostępniane stronie zewnętrznej. Atrybut exportparts="close-button" na zagnieżdżonym elemencie przekazuje te parts do zewnętrznego hosta.

// Outer shadow:
<inner-element exportparts="close-button"></inner-element>
// Page:
outer-element::part(close-button) { color: red; }

Zmiana nazw podczas eksportowania

exportparts="close-button: dismiss" eksportuje wewnętrzny part pod nową nazwą na elemencie zewnętrznym. Dzięki temu komponent zewnętrzny może udostępniać przejrzysty interfejs nazw niezależny od tego, które elementy wewnętrzne składają się na jego implementację.

parts a niestandardowe właściwości CSS

Niestandardowe właściwości CSS udostępniają wartości (kolory, odstępy, czcionki). Parts udostępniają elementy (pełny zakres możliwości CSS — obramowania, transformacje, animacje). Niestandardowych właściwości CSS należy używać dla globalnych tokenów, a parts dla jednorazowej personalizacji na poziomie elementu. Oba mechanizmy mogą współistnieć w tym samym komponencie.

Wzorzec tworzenia motywów

Praktyka stosowana w systemach projektowych: należy udostępnić niewielki zestaw parts dla elementów najczęściej personalizowanych (przycisków, nagłówków, wskaźników) oraz obszerny zestaw niestandardowych właściwości CSS dotyczących kolorów, odstępów i typografii. Użytkownicy mogą tworzyć motywy na poziomie wartości albo elementów, zależnie od potrzeb.

Stabilność nazw parts

Nazwy parts stają się częścią publicznego API komponentu — ich zmiana powoduje uszkodzenie CSS użytkowników. Należy wybierać nazwy opisujące rolę elementu ("close-button", "header", "track"), a nie jego pozycję ("first-button"), aby API pozostało zrozumiałe w miarę rozwoju implementacji.

Wskazówki dotyczące dokumentacji

W pliku readme komponentu należy wymienić wszystkie dostępne parts (oraz parts eksportowane). Bez dokumentacji użytkownicy muszą sprawdzać DOM, aby je odkryć, co wiąże ich z tym, co akurat znajdą. Listę parts należy traktować jak listę props komponentu frameworka.

Obsługa w przeglądarkach

::part i exportparts są dostępne we wszystkich nowoczesnych przeglądarkach. Nawet starsze wersje Safari obsługują już ::part. Można ich swobodnie używać; w bardzo starych przeglądarkach (w większości już nieużywanych) obejściem jest zastosowanie dodatkowych niestandardowych właściwości CSS.

Sprawdzenie wiedzy

Do czego służy atrybut exportparts?

Podsumowanie

Atrybut part udostępnia pojedyncze elementy shadow DOM do zewnętrznego stylowania za pomocą ::part(name) — zapewniając pełne możliwości CSS bez naruszania hermetyzacji. exportparts przekazuje parts z zagnieżdżonych elementów niestandardowych do zewnętrznego hosta i opcjonalnie zmienia ich nazwy. Parts należy łączyć z niestandardowymi właściwościami CSS, aby uzyskać kompletny interfejs tworzenia motywów, a listę parts dokumentować jako część API komponentu.

Często zadawane pytania

Czy lekcja „Part i exportparts do stylizacji zewnętrznej” jest bezpłatna?

Tak — pełny tekst „Part i exportparts do stylizacji zewnętrznej” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu HTML Academy, przejdź na CoddyKit PRO. Kurs HTML Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Part i exportparts do stylizacji zewnętrznej”?

Udostępnianie części shadow DOM zewnętrznemu CSS za pomocą part i exportparts Ćwiczysz HTML Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć HTML Academy?

Nie wymagamy żadnego doświadczenia. HTML Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 4 z 4.

Ile czasu zajmuje lekcja „Part i exportparts do stylizacji zewnętrznej”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji HTML Academy?

Tak. Każda lekcja HTML Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. attachShadow i Shadow Root
  2. Elementy slot do dystrybucji treści
  3. Style zakresowe wewnątrz shadow DOM
  4. Part i exportparts do stylizacji zewnętrznej
← Powrót do HTML Academy