Utility API
Utility API er et Sass-baseret værktøj til at generere hjælpeklasser.
Bootstrap-værktøjer genereres med vores hjælpeprogram API og kan bruges til at ændre eller udvide vores standardsæt af hjælpeprogrammer via Sass. Vores utility API er baseret på en række Sass-kort og funktioner til generering af familier af klasser med forskellige muligheder. Hvis du ikke er bekendt med Sass-kort, kan du læse de officielle Sass-dokumenter for at komme i gang.
Kortet $utilities
indeholder alle vores hjælpeprogrammer og fusioneres senere med dit brugerdefinerede $utilities
kort, hvis det findes. Hjælpekortet indeholder en nøgleliste over hjælpegrupper, som accepterer følgende muligheder:
Mulighed | Type | Standard værdi | Beskrivelse |
---|---|---|---|
property |
Påkrævet | – | Egenskabens navn, dette kan være en streng eller en række strenge (f.eks. vandrette polstringer eller marginer). |
values |
Påkrævet | – | Liste over værdier eller et kort, hvis du ikke ønsker, at klassenavnet skal være det samme som værdien. Hvis null bruges som kortnøgle, class står ikke foran klassens navn. |
class |
Valgfri | nul | Navn på den genererede klasse. Hvis det ikke er angivet og property er et array af strenge, class vil det som standard være det første element i property arrayet. Hvis det ikke er angivet og property er en streng, values bruges tasterne til class navnene. |
css-var |
Valgfri | false |
Boolean til at generere CSS-variabler i stedet for CSS-regler. |
css-variable-name |
Valgfri | nul | Brugerdefineret navn uden præfiks for CSS-variablen i regelsættet. |
local-vars |
Valgfri | nul | Kort over lokale CSS-variabler, der skal genereres ud over CSS-reglerne. |
state |
Valgfri | nul | Liste over pseudo-klasse varianter (f.eks. :hover eller :focus ) til at generere. |
responsive |
Valgfri | false |
Boolean angiver, om der skal genereres responsive klasser. |
rfs |
Valgfri | false |
Boolean for at muliggøre væskeskalering med RFS . |
print |
Valgfri | false |
Boolean angiver, om printklasser skal genereres. |
rtl |
Valgfri | true |
Boolean angiver, om utility skal beholdes i RTL. |
API forklaret
Alle hjælpevariabler tilføjes til $utilities
variablen i vores _utilities.scss
stylesheet. Hver gruppe af hjælpeprogrammer ser sådan ud:
$utilities: (
"opacity": (
property: opacity,
values: (
0: 0,
25: .25,
50: .5,
75: .75,
100: 1,
)
)
);
Som udsender følgende:
.opacity-0 { opacity: 0; }
.opacity-25 { opacity: .25; }
.opacity-50 { opacity: .5; }
.opacity-75 { opacity: .75; }
.opacity-100 { opacity: 1; }
Ejendom
Den nødvendige property
nøgle skal indstilles til ethvert hjælpeprogram, og det skal indeholde en gyldig CSS-egenskab. Denne egenskab bruges i det genererede hjælpeprograms regelsæt. Når class
nøglen udelades, fungerer den også som standard klassenavn. Overvej text-decoration
værktøjet:
$utilities: (
"text-decoration": (
property: text-decoration,
values: none underline line-through
)
);
Produktion:
.text-decoration-none { text-decoration: none !important; }
.text-decoration-underline { text-decoration: underline !important; }
.text-decoration-line-through { text-decoration: line-through !important; }
Værdier
Brug values
nøglen til at angive, hvilke værdier for den angivne property
der skal bruges i de genererede klassenavne og regler. Kan være en liste eller et kort (indstillet i hjælpeprogrammerne eller i en Sass-variabel).
Som en liste, ligesom med text-decoration
hjælpeprogrammer :
values: none underline line-through
Som et kort, ligesom med opacity
hjælpeprogrammer :
values: (
0: 0,
25: .25,
50: .5,
75: .75,
100: 1,
)
Som en Sass-variabel, der sætter listen eller kortet, som i vores position
hjælpeprogrammer :
values: $position-values
Klasse
Brug class
muligheden for at ændre det klassepræfiks, der bruges i den kompilerede CSS. For eksempel for at skifte fra .opacity-*
til .o-*
:
$utilities: (
"opacity": (
property: opacity,
class: o,
values: (
0: 0,
25: .25,
50: .5,
75: .75,
100: 1,
)
)
);
Produktion:
.o-0 { opacity: 0 !important; }
.o-25 { opacity: .25 !important; }
.o-50 { opacity: .5 !important; }
.o-75 { opacity: .75 !important; }
.o-100 { opacity: 1 !important; }
If class: null
, genererer klasser for hver af values
nøglerne:
$utilities: (
"visibility": (
property: visibility,
class: null,
values: (
visible: visible,
invisible: hidden,
)
)
);
Produktion:
.visible { visibility: visible !important; }
.invisible { visibility: hidden !important; }
CSS variable hjælpeprogrammer
Indstil den css-var
booleske indstilling til, true
og API'en vil generere lokale CSS-variabler for den givne vælger i stedet for de sædvanlige property: value
regler. Tilføj en valgfri css-variable-name
indstilling for at angive et andet CSS-variabelnavn end klassenavnet.
Overvej vores .text-opacity-*
forsyningsselskaber. Hvis vi tilføjer css-variable-name
muligheden, får vi et tilpasset output.
$utilities: (
"text-opacity": (
css-var: true,
css-variable-name: text-alpha,
class: text-opacity,
values: (
25: .25,
50: .5,
75: .75,
100: 1
)
),
);
Produktion:
.text-opacity-25 { --bs-text-alpha: .25; }
.text-opacity-50 { --bs-text-alpha: .5; }
.text-opacity-75 { --bs-text-alpha: .75; }
.text-opacity-100 { --bs-text-alpha: 1; }
Lokale CSS-variabler
Brug local-vars
indstillingen til at angive et Sass-kort, der genererer lokale CSS-variabler i hjælpeklassens regelsæt. Bemærk venligst, at det kan kræve yderligere arbejde at forbruge de lokale CSS-variabler i de genererede CSS-regler. Overvej for eksempel vores .bg-*
hjælpeprogrammer:
$utilities: (
"background-color": (
property: background-color,
class: bg,
local-vars: (
"bg-opacity": 1
),
values: map-merge(
$utilities-bg-colors,
(
"transparent": transparent
)
)
)
);
Produktion:
.bg-primary {
--bs-bg-opacity: 1;
background-color: rgba(var(--bs-primary-rgb), var(--bs-bg-opacity)) !important;
}
stater
Brug state
muligheden for at generere pseudo-klasse variationer. Eksempler på pseudoklasser er :hover
og :focus
. Når der er angivet en liste over tilstande, oprettes klassenavne for den pseudoklasse. For eksempel, for at ændre opacitet ved svævning, tilføj, state: hover
og du får .opacity-hover:hover
din kompilerede CSS.
Har du brug for flere pseudo-klasser? Brug en mellemrumssepareret liste over tilstande: state: hover focus
.
$utilities: (
"opacity": (
property: opacity,
class: opacity,
state: hover,
values: (
0: 0,
25: .25,
50: .5,
75: .75,
100: 1,
)
)
);
Produktion:
.opacity-0-hover:hover { opacity: 0 !important; }
.opacity-25-hover:hover { opacity: .25 !important; }
.opacity-50-hover:hover { opacity: .5 !important; }
.opacity-75-hover:hover { opacity: .75 !important; }
.opacity-100-hover:hover { opacity: 1 !important; }
Lydhør
Tilføj responsive
boolean for at generere responsive hjælpeprogrammer (f.eks. .opacity-md-25
) på tværs af alle breakpoints .
$utilities: (
"opacity": (
property: opacity,
responsive: true,
values: (
0: 0,
25: .25,
50: .5,
75: .75,
100: 1,
)
)
);
Produktion:
.opacity-0 { opacity: 0 !important; }
.opacity-25 { opacity: .25 !important; }
.opacity-50 { opacity: .5 !important; }
.opacity-75 { opacity: .75 !important; }
.opacity-100 { opacity: 1 !important; }
@media (min-width: 576px) {
.opacity-sm-0 { opacity: 0 !important; }
.opacity-sm-25 { opacity: .25 !important; }
.opacity-sm-50 { opacity: .5 !important; }
.opacity-sm-75 { opacity: .75 !important; }
.opacity-sm-100 { opacity: 1 !important; }
}
@media (min-width: 768px) {
.opacity-md-0 { opacity: 0 !important; }
.opacity-md-25 { opacity: .25 !important; }
.opacity-md-50 { opacity: .5 !important; }
.opacity-md-75 { opacity: .75 !important; }
.opacity-md-100 { opacity: 1 !important; }
}
@media (min-width: 992px) {
.opacity-lg-0 { opacity: 0 !important; }
.opacity-lg-25 { opacity: .25 !important; }
.opacity-lg-50 { opacity: .5 !important; }
.opacity-lg-75 { opacity: .75 !important; }
.opacity-lg-100 { opacity: 1 !important; }
}
@media (min-width: 1200px) {
.opacity-xl-0 { opacity: 0 !important; }
.opacity-xl-25 { opacity: .25 !important; }
.opacity-xl-50 { opacity: .5 !important; }
.opacity-xl-75 { opacity: .75 !important; }
.opacity-xl-100 { opacity: 1 !important; }
}
@media (min-width: 1400px) {
.opacity-xxl-0 { opacity: 0 !important; }
.opacity-xxl-25 { opacity: .25 !important; }
.opacity-xxl-50 { opacity: .5 !important; }
.opacity-xxl-75 { opacity: .75 !important; }
.opacity-xxl-100 { opacity: 1 !important; }
}
Aktivering af print
indstillingen vil også generere hjælpeklasser til print, som kun anvendes i @media print { ... }
medieforespørgslen.
$utilities: (
"opacity": (
property: opacity,
print: true,
values: (
0: 0,
25: .25,
50: .5,
75: .75,
100: 1,
)
)
);
Produktion:
.opacity-0 { opacity: 0 !important; }
.opacity-25 { opacity: .25 !important; }
.opacity-50 { opacity: .5 !important; }
.opacity-75 { opacity: .75 !important; }
.opacity-100 { opacity: 1 !important; }
@media print {
.opacity-print-0 { opacity: 0 !important; }
.opacity-print-25 { opacity: .25 !important; }
.opacity-print-50 { opacity: .5 !important; }
.opacity-print-75 { opacity: .75 !important; }
.opacity-print-100 { opacity: 1 !important; }
}
Betydning
Alle hjælpeprogrammer, der genereres af API'et, inkluderer !important
for at sikre, at de tilsidesætter komponenter og modifikationsklasser som tilsigtet. Du kan skifte denne indstilling globalt med $enable-important-utilities
variablen (standard til true
).
Brug af API
Nu hvor du er bekendt med, hvordan utilities API fungerer, kan du lære, hvordan du tilføjer dine egne brugerdefinerede klasser og ændrer vores standardværktøjer.
Tilsidesæt hjælpeprogrammer
Tilsidesæt eksisterende hjælpeprogrammer ved at bruge den samme nøgle. For eksempel, hvis du ønsker yderligere responsive overflow-værktøjsklasser, kan du gøre dette:
$utilities: (
"overflow": (
responsive: true,
property: overflow,
values: visible hidden scroll auto,
),
);
Tilføj hjælpeprogrammer
Nye hjælpeprogrammer kan tilføjes til standardkortet $utilities
med en map-merge
. Sørg for, at vores nødvendige Sass-filer og _utilities.scss
importeres først, og brug derefter til map-merge
at tilføje dine yderligere hjælpeprogrammer. For eksempel, her er, hvordan du tilføjer et responsivt cursor
hjælpeprogram med tre værdier.
@import "bootstrap/scss/functions";
@import "bootstrap/scss/variables";
@import "bootstrap/scss/maps";
@import "bootstrap/scss/mixins";
@import "bootstrap/scss/utilities";
$utilities: map-merge(
$utilities,
(
"cursor": (
property: cursor,
class: cursor,
responsive: true,
values: auto pointer grab,
)
)
);
@import "bootstrap/scss/utilities/api";
Rediger hjælpeprogrammer
Rediger eksisterende hjælpeprogrammer i standardkortet $utilities
med map-get
og map-merge
funktioner. I eksemplet nedenfor tilføjer vi en ekstra værdi til width
hjælpeprogrammerne. Start med en initial map-merge
og angiv derefter, hvilket hjælpeprogram du vil ændre. Derfra skal du hente det indlejrede "width"
kort med map-get
for at få adgang til og ændre værktøjets muligheder og værdier.
@import "bootstrap/scss/functions";
@import "bootstrap/scss/variables";
@import "bootstrap/scss/maps";
@import "bootstrap/scss/mixins";
@import "bootstrap/scss/utilities";
$utilities: map-merge(
$utilities,
(
"width": map-merge(
map-get($utilities, "width"),
(
values: map-merge(
map-get(map-get($utilities, "width"), "values"),
(10: 10%),
),
),
),
)
);
@import "bootstrap/scss/utilities/api";
Aktiver responsiv
Du kan aktivere responsive klasser for et eksisterende sæt af hjælpeprogrammer, der som standard ikke er responsive i øjeblikket. For eksempel for at gøre border
klasserne responsive:
@import "bootstrap/scss/functions";
@import "bootstrap/scss/variables";
@import "bootstrap/scss/maps";
@import "bootstrap/scss/mixins";
@import "bootstrap/scss/utilities";
$utilities: map-merge(
$utilities, (
"border": map-merge(
map-get($utilities, "border"),
( responsive: true ),
),
)
);
@import "bootstrap/scss/utilities/api";
Dette vil nu generere responsive variationer af .border
og .border-0
for hvert brudpunkt. Din genererede CSS vil se sådan ud:
.border { ... }
.border-0 { ... }
@media (min-width: 576px) {
.border-sm { ... }
.border-sm-0 { ... }
}
@media (min-width: 768px) {
.border-md { ... }
.border-md-0 { ... }
}
@media (min-width: 992px) {
.border-lg { ... }
.border-lg-0 { ... }
}
@media (min-width: 1200px) {
.border-xl { ... }
.border-xl-0 { ... }
}
@media (min-width: 1400px) {
.border-xxl { ... }
.border-xxl-0 { ... }
}
Omdøb hjælpeprogrammer
Mangler du v4-værktøjer, eller er du vant til en anden navnekonvention? Utilities API kan bruges til at tilsidesætte resultatet class
af et givet hjælpeprogram - for eksempel til at omdøbe .ms-*
hjælpeprogrammer til oldish .ml-*
:
@import "bootstrap/scss/functions";
@import "bootstrap/scss/variables";
@import "bootstrap/scss/maps";
@import "bootstrap/scss/mixins";
@import "bootstrap/scss/utilities";
$utilities: map-merge(
$utilities, (
"margin-start": map-merge(
map-get($utilities, "margin-start"),
( class: ml ),
),
)
);
@import "bootstrap/scss/utilities/api";
Fjern hjælpeprogrammer
Fjern alle standardværktøjerne med map-remove()
Sass-funktionen .
@import "bootstrap/scss/functions";
@import "bootstrap/scss/variables";
@import "bootstrap/scss/maps";
@import "bootstrap/scss/mixins";
@import "bootstrap/scss/utilities";
// Remove multiple utilities with a comma-separated list
$utilities: map-remove($utilities, "width", "float");
@import "bootstrap/scss/utilities/api";
Du kan også bruge map-merge()
Sass-funktionen og indstille gruppetasten til null
for at fjerne hjælpeprogrammet.
@import "bootstrap/scss/functions";
@import "bootstrap/scss/variables";
@import "bootstrap/scss/maps";
@import "bootstrap/scss/mixins";
@import "bootstrap/scss/utilities";
$utilities: map-merge(
$utilities,
(
"width": null
)
);
@import "bootstrap/scss/utilities/api";
Tilføj, fjern, rediger
Du kan tilføje, fjerne og ændre mange hjælpeprogrammer på én gang med map-merge()
Sass-funktionen . Sådan kan du kombinere de tidligere eksempler til et større kort.
@import "bootstrap/scss/functions";
@import "bootstrap/scss/variables";
@import "bootstrap/scss/maps";
@import "bootstrap/scss/mixins";
@import "bootstrap/scss/utilities";
$utilities: map-merge(
$utilities,
(
// Remove the `width` utility
"width": null,
// Make an existing utility responsive
"border": map-merge(
map-get($utilities, "border"),
( responsive: true ),
),
// Add new utilities
"cursor": (
property: cursor,
class: cursor,
responsive: true,
values: auto pointer grab,
)
)
);
@import "bootstrap/scss/utilities/api";
Fjern hjælpeprogrammet i RTL
Nogle kantcovers gør RTL-styling vanskelig , såsom linjeskift på arabisk. Hjælpeprogrammer kan således fjernes fra RTL-output ved at indstille rtl
indstillingen til false
:
$utilities: (
"word-wrap": (
property: word-wrap word-break,
class: text,
values: (break: break-word),
rtl: false
),
);
Produktion:
/* rtl:begin:remove */
.text-break {
word-wrap: break-word !important;
word-break: break-word !important;
}
/* rtl:end:remove */
Dette udsender ikke noget i RTL, takket være RTLCSS remove
-kontroldirektivet .