BunStackDocs

Butiker

Krokar och CSS-referens

Krokarna i butikens HTML per komponent, krokarna på sidan, hur komponent-CSS avgränsas och vad CSS-saneringen tar bort.

Senast uppdaterad · 12 min läsning

Krokarna är attribut i butikens HTML som din CSS kan rikta in sig på.

Var: Används i Code › CSS i kodredigeraren, i panelen Code och i Theme › Custom CSS. Se Egen CSS och kod i head.

Mallsyntaxen, variablerna och actions för egen HTML finns i Mallreferens.

Krokarna per komponent

Tabellen följer koden: byter en krok namn ändras tabellen samtidigt. Varje komponent har tre slags krokar:

  • en rot, som komponentens CSS avgränsas till och som JS:en får som root
  • inre element
  • tillstånd, som butiken sätter på roten för att visa läget

Ett tillstånd skrivs på roten: [data-bs-header][data-bs-transparent], inte som ett barn.

KomponentKrokTypVärdenVad
Header[data-bs-header]rotSidhuvudet på varje sida
Header[data-bs-header-inner]inreRaden inuti sidhuvudet: sidbredden på Page, ut till sidomarginalen på Full
Header[data-bs-logo]inreLogotyplänken. På en smal mobil krymper den så att ikonerna och menyknappen får plats
Header[data-bs-header-nav]inrestart, endLänkraden i Logo left och Centered. I Split är den två halvor
Header[data-bs-header-icons]inreIkonraden i layouten Icons + panel
Header[data-bs-menu-button]inreKnappen som öppnar menypanelen
Header[data-bs-cart-icon]inreVarukorgsikonen
Header[data-bs-cart-count]inreAntalet varor bredvid varukorgsikonen. Butiken uppdaterar det
Header[data-bs-wishlist-icon]inreÖnskelisteikonen
Header[data-bs-announcement]inreAnnonsraden ovanför sidhuvudet
Header[data-bs-transparent]tillståndSätts på startsidan medan Transparent over hero är på
Header[data-bs-scrolled]tillståndSätts efter 24 px scroll, och medan menypanelen är öppen (bara genomskinligt sidhuvud)
Header[data-bs-sticky]tillståndSätts medan Sticky är på
Header[data-bs-header-width]tillståndpage, fullValet Width: page lägger raden i linje med sidans innehåll, full går ut till sidomarginalen
Menu panel[data-bs-menu]rotPanelen som öppnas från sidhuvudet
Menu panel[data-bs-menu-layout]inresplit, megaPanelens rutnät: Shop + information (split) eller Links, products, contact (mega)
Menu panel[data-bs-menu-links]inreListan med stora länkar
Menu panel[data-bs-menu-link]inreEn stor länk. Radhöjden följer textstorleken. data-active märker länken som korten följer, aria-current sidan kunden står på
Menu panel[data-bs-menu-secondary]inreListan med små länkar
Menu panel[data-bs-menu-products]inreProduktkolumnen bredvid länkarna (Links, products, contact)
Menu panel[data-bs-menu-heading]inreRubriken över produkterna, när en är ifylld
Menu panel[data-bs-menu-cards]inreKorten. Uppsättningen byts med den aktiva länken
Menu panel[data-bs-menu-contact]inreKontaktraden längst ner i panelen
Footer[data-bs-footer]rotSidfoten på varje sida
Footer[data-bs-footer-inner]inreRaden inuti sidfoten: sidbredden på Page, ut till sidomarginalen på Full
Footer[data-footer-column]inrebrand, shop, help, legalEn kolumn i sidfoten
Footer[data-bs-footer-links]inreLänklistan i en kolumn. Tokens-CSS:en sätter länkarnas storlek och opacitet här
Footer[data-bs-footer-social]inreRaden med sociala länkar längst ner. Tokens-CSS:en ritar länkarnas rutor här
Footer[data-footer-copyright]inreCopyrightraden
Footer[data-bs-footer-width]tillståndpage, fullValet Width, som på Header
Product card[data-bs-card]rotEn produkt i ett rutnät. Överallt där produkter listas
Product card[data-bs-card-media]inreBildplattan
Product card[data-bs-card-hover]inreDen andra bilden som visas vid hover
Product card[data-bs-card-body]inreTitel, taggrad och pris
Product card[data-bs-card-title]inreTiteln
Product card[data-bs-card-meta]inreTaggraden under titeln
Product card[data-bs-card-price]inrePrisraden
Product card[data-bs-card-variant]tillståndcard, plate, editorialKortets yta
Product page[data-bs-product-layout]rotclassic, splitProduktsidan: galleri och köppanel
Product page[data-bs-product-info]inreKöppanelen: titel, pris, val, lägg i varukorgen
Product page[data-bs-swatch]inreEn färgprick i variantväljaren
Product page[data-bs-cta="primary"]inreLägg i varukorgen och de andra primära knapparna
Product page[data-bs-image-side]tillståndleft, rightVilken sida galleriet ligger på (Split-layouten)
Gallery[data-bs-gallery]rotProduktbilderna på produktsidan
Collection page[data-bs-category]rotEn samlingssida: en kategori, All products eller sökresultat
Collection page[data-bs-category-header]inreBandet med kategorinamnet
Collection page[data-bs-category-header-inner]inreKolumnen inuti bandet
Collection page[data-bs-collection-body]inreFiltren och rutnätet. Från Desktop står sidokolumnen bredvid rutnätet
Collection page[data-bs-filters-layout]inresidebar, top, noneHur sidan lägger ut filtren
Collection page[data-bs-filters]inreFiltren, i sidokolumn eller i en rad, från Desktop
Collection page[data-bs-filters-mode]inretop, sidebarHur filtren ligger
Collection page[data-bs-sticky]inreSätts på filtren och raden medan Filters stay in view är på. På raden ovanför rutnätet bara medan filtren ryms på en rad
Collection page[data-bs-stuck]inreSätts på raden medan den ligger kvar under sidhuvudet
Collection page[data-bs-facet]inreEtt filter i raden ovanför rutnätet: knappen och listan
Collection page[data-bs-facet-panel]inreListan med värden som öppnas under en filterknapp
Collection page[data-bs-open]inreSätts på filtret vars lista är öppen (ett i taget) och på en öppen grupp
Collection page[data-bs-facet-group]inreEn grupp i sidokolumnen och telefonpanelen: namnet och värdena
Collection page[data-bs-facet-toggle]inreGruppens namn, som fäller ihop gruppen
Collection page[data-bs-facet-body]inreDen del av gruppen som fälls ihop
Collection page[data-bs-facet-values]inreGruppens värden. Över 240 px rullar de inom gruppen
Collection page[data-bs-facet-value]inreEtt värde: rutan, namnet och antalet
Collection page[data-bs-on]inreSätts på ett ikryssat värde
Collection page[data-bs-count]inreAntalet efter ett värde
Collection page[data-bs-clear-filters]inreRensa filter (n), överst i sidokolumnen
Collection page[data-bs-cta="primary"]inreRensa filter i raden. Visa N produkter i telefonpanelen
Collection page[data-bs-filter-bar]inrecountRaden över rutnätet: antalet och Sortera. På telefon och surfplatta också Filter (n). count när den inte har någon av dem: bara antalet, en textrad på alla skärmar
Collection page[data-bs-filter-open]inreFilter (n), på telefon och surfplatta
Collection page[data-bs-result-count]inreHur många produkter sidan listar
Collection page[data-bs-sort]inreSorteringen
Collection page[data-bs-filter-panel]inrePanelen på telefon och surfplatta, över sidan
Collection page[data-bs-filter-sheet]inreSjälva panelen, från vänster
Collection page[data-bs-filter-shade]inreSkuggan bakom panelen
Collection page[data-bs-closing]inreSätts på panelen medan den glider ut
Banners[data-bs-banner]rotEn bildbanner bland sidans sektioner
Banners[data-bs-banner-inner]inreTextkolumnen över bilden
Banners[data-bs-banner-heading]inreRubriken
Banners[data-bs-banner-subtitle]inreUnderrubriken
Banners[data-bs-cta]inreprimary, light, outlineKnappen
Banners[data-bs-banner-img]inreBilden i en banner utan text. Höjdtaket följer skärmen
Banners[data-bs-banner-size]tillståndxs, sm, md, lg, xl, screenHöjdvalet på dator
Banners[data-bs-banner-size-tablet]tillståndxs, sm, md, lg, xl, screenHöjdvalet på surfplatta: eget, eller datorns
Banners[data-bs-banner-size-mobile]tillståndxs, sm, md, lg, xl, screenHöjdvalet på mobil: eget, eller surfplattans
Banners[data-bs-bleed]tillståndfull, customFull: bannern går kant i kant. Custom: en annan bredd än sidans

Krokarna på sidan

KrokVad
[data-bs-main]Innehållskolumnen mellan sidhuvud och sidfot. Bredden är --bs-content-max och sidomarginalen --bs-gutter
[data-bs-block="<sektions-id>"], #bs-<sektions-id>En sektion på vilken sida som helst. Fungerar som ankare för länkar. Roten för CSS och JS i en Custom component-sektion
[data-bs-section-width]En sektions bredd, på sektionens omslag: page, xs, sm, md, lg, xl, 2xl, full eller custom. Den uträknade bredden ligger i --bs-sec-w
[data-bs-hide~="mobile"]En sektion som är dold på mobil (Show on). Värdena är desktop, tablet och mobile, åtskilda med mellanslag
[data-bs-first-on~="mobile"]Den första sektionen som visas på mobil när den första sektionen är dold där. Värdena är desktop, tablet och mobile, åtskilda med mellanslag
[data-bs-video-frame]Spelaren i en Video-sektion. --bs-video-ratio är videons bredd delad med höjden, till exempel 1.7778 för 16:9
[data-bs-grid-more]"View all"-länken i en produktrad
[data-bs-grid]Rutnätet i Product grid, Categories, Gallery, Testimonials, Stats, Cards, Collection list och Recently viewed. Kolumnerna per skärm (Per screen size) ligger i --bs-cols, --bs-cols-tablet och --bs-cols-mobile. grid-template-columns på kroken vinner utan !important
[data-bs-cta="secondary"]Load more-knappen under ett produktrutnät
[data-bs-section-tone]En sektion vars Background inte är Page. Värdet är light, dark, brand eller custom. Färgerna ligger i --bs-tone-bg och --bs-tone-fg, den lodräta utfyllnaden i --bs-tone-pad
[data-bs-cards], [data-bs-cards-item]Sektionen Cards, med värdet grid eller rows, och ett kort i den. Kortens utseende ligger i [data-bs-cards-look]: plain, panel eller panel-line
--bs-main-padInnehållskolumnens vertikala marginal, 2.5rem. margin-top: calc(-1 * var(--bs-main-pad)) drar en sektion kant i kant under sidhuvudet
--bs-content-maxSidbredden från Theme › Layout, till exempel 1024px
--bs-gutterSidomarginalen: 16px på mobil, 24px på surfplatta och 32px på dator
[data-bs-legal-line]Raden med ångerrättslänken under en egen sidfot, eller på en sida utan sidfot. [data-bs-legal-line-inner] är raden inuti
--bs-header-offsetSidhuvudets höjd medan det ligger kvar när sidan scrollas, annars 0. Samlingssidornas filter ligger under det med Filters stay in view

Regler i tokens-CSS:en

Det här är regler i tokens-CSS:en, inte inline-stilar på elementen:

  • sidhuvudets utfyllnad, färg, bakgrund och kant
  • sidfotens länkar
  • bannerns rubrik, underrubrik, höjd och hörn
  • bannerknappens färger
  • produktkortets platta och bildhörn
  • kolumnerna i rutnäten, per skärm
  • sidans bredd och sidomarginal, sidhuvudets och sidfotens rader och sektionernas bredd
  • vilka skärmar en sektion visas på, och bannerns höjd per skärm
  • samlingssidornas filter: sidokolumnen, raden och den smala raden på telefon och surfplatta

En vanlig regel på kroken vinner över tokens-CSS:en, utan !important. Bara en regel med !important i Theme › Custom CSS eller i en komponentstils egen CSS går före.

Så avgränsas komponentens CSS

CSS:en i Code › CSS gäller bara komponenten. Varje selektor får komponentens rot framför sig när temat kompileras. Det gäller även inuti @media, @supports, @container och @layer.

Du skriverButiken får
nav a { … }[data-bs-header] nav a { … }
[data-bs-header] nav a { … }Oförändrat. Roten står redan där
& { padding: 32px; } eller [data-bs-header] { … }Regeln för själva roten
:hover { … }[data-bs-header]:hover { … }
[data-bs-transparent]:not([data-bs-scrolled]) svg { … }[data-bs-header][data-bs-transparent]:not([data-bs-scrolled]) svg { … }. Tillståndet fogas till roten
:root { … }, html { … }, body { … }Oförändrat, med en varning. Reglerna når hela sidan
@keyframes, @font-faceOförändrat. src i @font-face ska peka på en fil i mediabiblioteket
@import …;Tas bort
[data-bs-transparent]:not([data-bs-scrolled]) svg { stroke-width: 1.4; }

Saneringen av CSS

BunStack sanerar all CSS: i komponenter, sektioner, sidor och temat.

  • < tas bort, så ingen </style> kan bildas.
  • @import, expression(), javascript: och andra skriptvägar tas bort.
  • > behålls, så barnkombinatorer som [data-bs-menu] > a fungerar. ::before och ::after behålls.
  • !important behålls. Komponentens CSS ligger efter tokens-CSS:en, stilen och Theme › Custom CSS, så en vanlig regel på en krok räcker oftast.

BunStack tar bort CSS som inte går att läsa och visar en varning som namnger den. Varningen står i designern och som <!-- bs-component-warning: … --> i butikens HTML.

  • En regel som aldrig stängs tas bort.
  • Text som inte är CSS tas bort för sig. Den fogas aldrig ihop med nästa regel.
  • En selektor som fortsätter på nästa rad behöver ett kommatecken eller en kombinator vid radbrytningen. Annars räknas den första raden som en anteckning och tas bort.

Resten av CSS:en fungerar.

Typsnitt

  1. Ladda upp typsnittet som .woff2 eller .woff i mediabiblioteket.
  2. Tryck Copy URL på filen.
  3. Peka @font-face { src: url(…) } på adressen.

Butikens policy laddar bara typsnitt från mediabiblioteket. Ett typsnitt från en annan adress laddas varken i butiken eller på arbetsytan.

Variabler från temat

Hämta färger, typsnitt och radier från temats variabler. Då följer de temat:

VariabelVärde
var(--bunstack-color-primary)Primärfärgen
var(--bunstack-color-fg)Textfärgen
var(--bunstack-font-heading)Rubriktypsnittet
var(--bs-surface)Ytfärgen för kort och plattor
var(--bs-radius-lg)Fotohörnen
var(--bunstack-button-radius)Knapphörnen