Fejlesztőknek
Kezdj bele
Témák/A chrome stabil class-ai

A chrome stabil class-ai

A platform által a márkaelemeken, kosáron, felhasználói menün, promóciós sávon, chaten, nyelvi banneren és kártyakereten garantált class hookok, és ezek override-ja egy téma saját CSS-éből.

Ezen az oldalon

A platform alapértelmezett elemeket biztosít a márkaelemekhez, a kosárhoz, a felhasználói menühöz, a promóciós sávhoz, a chathez, a nyelvi bannerhez és a product cardokhoz. A témák az SDK-n keresztül vagy a fejlécükben és láblécükben található platformblokkok segítségével renderelik ezeket. Ezeknek az elemeknek a stílusát az alábbi stabil class-okkal szabhatod át. A classok kizárólag a platform elemein léteznek, a téma vagy a kereskedő által írt jelöléseken nem.

Mindegyik class egy egyszerű kebab-case token az elem className attribútumában. Önmagában nem hordoz semmilyen stílust, és a theme interface részét képezi: a platform a körülötte lévő Tailwind utility classokat módosíthatja, magát a tokent viszont soha.

Az override-minta

A szabályokat a témád src/styles/theme.css fájljába írd, réteg nélkül (unlayered), a :where() szelektorral:

src/styles/theme.css
:where(.header-brand) {
  letter-spacing: 0.08em;
}

:where(.cart-count) {
  background: var(--color-surface);
  border-color: var(--color-line);
}

Ez két dolog miatt működik:

  • A réteg nélküli CSS felülírja a Tailwindet. A platform utility classai a @layer utilities rétegben élnek. Egy réteg nélküli szabály a specificity-től függetlenül felülír minden rétegzett szabályt, így sem az !important használatára, sem specifikusabb szelektorra nincs szükség.
  • A :where() 0-n tartja a specificity-t. A szabályod a cascade legkönnyebben felülírható eleme marad, így egy későbbi saját szabályod, vagy ugyanazon az elemen lévő state class továbbra is érvényesül. A forráskódbeli sorrend válik az override-mechanizmussá.

A header-brand a @poltura/theme-sdk/chrome csomagban található Brand és Logo komponensek, valamint a logo blokk által kirajzolt hivatkozáson található. Ezek a legtöbb téma láblécében is megjelennek, így egy sima .header-brand szabály a lábléc logóját is eléri. A kizárólag a láblécre vonatkozó szabályokat a saját footer classoddal szűkítsd le.

A classok

ClassFelületMegjegyzések
header-brandmárkaa márkahivatkozás: Brand, Logo és a logo blokk
header-brand-markmárkanégyzet alakú kezdőbetűs jelvény, ha a boltnak nincs logója
header-brand-labelmárkaa bolt neve, ha a boltnak nincs logója
cart-buttonkosára CartButton indító <button> eleme (data-cart='header' attribútumot is hordoz)
cart-countkosármennyiségjelző badge
cart-button-labelkosáraz indítógomb szöveges felirata
cart-panelkosárasztali felugró ablak és mobil alsó lap (sheet) tartalma
cart-panel-titlekosára panel címsora
user-menu-triggerfelhasználói menüa UserMenu (és az account blokk) indító <button> eleme
user-menu-contentfelhasználói menüa legördülő menü tartalmának gyökere
user-menu-labelfelhasználói menüminden felirat a menüben
promo-barpromóciós sáva PromoBar sáv gyökere
promo-bar-innerpromóciós sávközépre igazított tároló
promo-bar-linkpromóciós sáva hirdetmény hivatkozása
inbox-rootchat widgetfix pozíciójú wrapper elem (data-poltura-inbox)
inbox-launcherchat widgetindítógomb
inbox-panelchat widgeta modal gyökere
inbox-panel__headerchat widgeta cím és a bezárás sora
inbox-messageschat widgetgörgetési terület (role="log")
inbox-message-rowchat widgeta szerző, az üzenetbuborék és a metaadatok wrappere; --system a rendszerszövegekhez
inbox-messagechat widgetkizárólag a tényleges buborék; plusz --customer, --staff, --ai
inbox-composerchat widgetszövegmező, csatolás és küldés
inbox-statuschat widgetoffline / újracsatlakozási sor
inbox-offlinechat widgetoffline üzenetrögzítő űrlap
locale-bannernyelvi bannera LocaleBanner javaslati modaljának gyökere
locale-banner-innernyelvi bannerbelső margóval ellátott body
locale-banner-switchnyelvi bannerelsődleges „nyelvváltás” gomb
locale-banner-staynyelvi bannermásodlagos „maradás” gomb
product-card-bodytermékkártyaa ProductCard tartalmi oszlopa
product-card-titletermékkártyaterméknév
product-card-pricetermékkártyaprice block
featured-view-all-mobileterméksoraz „összes megtekintése” link a ProductRail alatt kis képernyőkön
theme-section-bandbeépített szekciókteljes szélességű banner szekció gyökere
theme-section-centeredbeépített szekciókközépre igazított tartalmi oszlop egy szekción belül

A chat widget class-ainak teljes listáját a Chat widget chrome oldalon találod.

Fejlécállapotok

A fejléc egy szekciócsoport (layout/header.json), így az elemei inkább a kereskedő saját stílusbeállításait hordozzák, mintsem class hookokat. A görgetési állapota attribútumként érhető el a CSS számára:

AttribútumEzen vanJelentés
data-theme-chrome='header'a rögzített fejléc dobozaa promóciós sáv és a header együtt
data-header-behaviora rögzített fejléc dobozastatic, sticky vagy reveal
data-header-overlaya rögzített fejléc dobozaa fejléc átfedi az oldal első szekcióját
data-header-scrolleda rögzített fejléc dobozaa görgetés túlhaladt a fejlécen
data-header-hiddena rögzített fejléc dobozaa felfedő fejléc rejtve van, amíg a vásárló lefelé görget
data-header-shrink, -shrunka rögzített fejléc dobozaa fejléc görgetéskor összezsugorodik, és össze is zsugorodott
data-header-sectiona header szekció gyökerea fejlécsáv
data-header-mobile-froma header szekció gyökeremobile, tablet vagy desktop: ahol az oldalfiók átveszi a helyét
:where([data-theme-chrome='header'][data-header-scrolled]) [data-header-section] {
  box-shadow: 0 1px 0 var(--border);
}

A @poltura/theme-sdk/chrome csomagban lévő useHeaderVisibility() ugyanezeket a scrolled és hidden állapotokat olvassa ki kódban.

Lebegő elemek

Bármi, amit egy téma a viewport aljára rögzít (sticky vásárlási sáv, lebegő gomb, saját banner), három eltolási értéket (offset) ad hozzá a bottom értékéhez, amelyek alapértelmezetten 0px méretűek:

VáltozóAkkor van beállítva, ha
--banner-bottom-offsetegy alsó bannersáv látható (annak magassága)
--preview-bar-offseta privát előnézeti sáv látható (annak magassága)
--poltura-editor-inset-bottomaz oldal a témaszerkesztő vásznán van, és a témaszerkesztő kitakarja az alját (telefonokon)
:where(.my-sticky-buy) {
  position: fixed;
  bottom: calc(
    var(--banner-bottom-offset, 0px) + var(--preview-bar-offset, 0px) +
      var(--poltura-editor-inset-bottom, 0px)
  );
}

A platform chatindítója, az oldal tetejére ugró gomb, a bannerek és a cookie-sáv már eleve így működnek. A --poltura-editor-inset-bottom csak a témaszerkesztőn belül létezik, így az élő webáruházat nem befolyásolja. Enélkül az alulra rögzített elem telefonon a témaszerkesztő fülsávja vagy beállítólapja alá kerülne.

Amihez nincs hook

A fejléc menü-, kereső- és nyelvválasztó blokkjai, valamint a MainNav, MobileNav, MegaMenu, MobileMenu, HeaderSearch és LocaleSwitcher komponensek nem használnak class hookokat. Ezeket az elem stílusbeállításaival, az SDK-elemek által fogadott className és classes propokkal (lásd a chrome, a navigáció és a keresés referenciáit), a fenti fejlécattribútumokkal vagy a tárolóikkal formázhatod.

Következő lépések

Utoljára frissítve