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:
: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 utilitiesré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!importanthaszná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
| Class | Felület | Megjegyzések |
|---|---|---|
header-brand | márka | a márkahivatkozás: Brand, Logo és a logo blokk |
header-brand-mark | márka | négyzet alakú kezdőbetűs jelvény, ha a boltnak nincs logója |
header-brand-label | márka | a bolt neve, ha a boltnak nincs logója |
cart-button | kosár | a CartButton indító <button> eleme (data-cart='header' attribútumot is hordoz) |
cart-count | kosár | mennyiségjelző badge |
cart-button-label | kosár | az indítógomb szöveges felirata |
cart-panel | kosár | asztali felugró ablak és mobil alsó lap (sheet) tartalma |
cart-panel-title | kosár | a panel címsora |
user-menu-trigger | felhasználói menü | a UserMenu (és az account blokk) indító <button> eleme |
user-menu-content | felhasználói menü | a legördülő menü tartalmának gyökere |
user-menu-label | felhasználói menü | minden felirat a menüben |
promo-bar | promóciós sáv | a PromoBar sáv gyökere |
promo-bar-inner | promóciós sáv | középre igazított tároló |
promo-bar-link | promóciós sáv | a hirdetmény hivatkozása |
inbox-root | chat widget | fix pozíciójú wrapper elem (data-poltura-inbox) |
inbox-launcher | chat widget | indítógomb |
inbox-panel | chat widget | a modal gyökere |
inbox-panel__header | chat widget | a cím és a bezárás sora |
inbox-messages | chat widget | görgetési terület (role="log") |
inbox-message-row | chat widget | a szerző, az üzenetbuborék és a metaadatok wrappere; --system a rendszerszövegekhez |
inbox-message | chat widget | kizárólag a tényleges buborék; plusz --customer, --staff, --ai |
inbox-composer | chat widget | szövegmező, csatolás és küldés |
inbox-status | chat widget | offline / újracsatlakozási sor |
inbox-offline | chat widget | offline üzenetrögzítő űrlap |
locale-banner | nyelvi banner | a LocaleBanner javaslati modaljának gyökere |
locale-banner-inner | nyelvi banner | belső margóval ellátott body |
locale-banner-switch | nyelvi banner | elsődleges „nyelvváltás” gomb |
locale-banner-stay | nyelvi banner | másodlagos „maradás” gomb |
product-card-body | termékkártya | a ProductCard tartalmi oszlopa |
product-card-title | termékkártya | terméknév |
product-card-price | termékkártya | price block |
featured-view-all-mobile | terméksor | az „összes megtekintése” link a ProductRail alatt kis képernyőkön |
theme-section-band | beépített szekciók | teljes szélességű banner szekció gyökere |
theme-section-centered | beépített szekciók | kö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útum | Ezen van | Jelentés |
|---|---|---|
data-theme-chrome='header' | a rögzített fejléc doboza | a promóciós sáv és a header együtt |
data-header-behavior | a rögzített fejléc doboza | static, sticky vagy reveal |
data-header-overlay | a rögzített fejléc doboza | a fejléc átfedi az oldal első szekcióját |
data-header-scrolled | a rögzített fejléc doboza | a görgetés túlhaladt a fejlécen |
data-header-hidden | a rögzített fejléc doboza | a felfedő fejléc rejtve van, amíg a vásárló lefelé görget |
data-header-shrink, -shrunk | a rögzített fejléc doboza | a fejléc görgetéskor összezsugorodik, és össze is zsugorodott |
data-header-section | a header szekció gyökere | a fejlécsáv |
data-header-mobile-from | a header szekció gyökere | mobile, 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-offset | egy alsó bannersáv látható (annak magassága) |
--preview-bar-offset | a privát előnézeti sáv látható (annak magassága) |
--poltura-editor-inset-bottom | az 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
- Fejléc megamenük: blokkokból felépített széles fejléc-legördülők.
- Chat widget chrome: a chat widget minden class-a és része.