Utility API
L'API di utilità hè un strumentu basatu in Sass per generà classi di utilità.
L'utilità Bootstrap sò generate cù a nostra API di utilità è ponu esse aduprate per mudificà o allargà u nostru settore predeterminatu di classi di utilità via Sass. A nostra API di utilità hè basatu annantu à una seria di mappe Sass è funzioni per generà famiglie di classi cù diverse opzioni. Se ùn site micca familiarizatu cù e carte Sass, leghjite nantu à i documenti ufficiali Sass per cumincià.
A $utilities
mappa cuntene tutte e nostre utilità è hè più tardi unitu cù a vostra $utilities
mappa persunalizata, se presente. A mappa di utilità cuntene una lista chjave di gruppi di utilità chì accettanu e seguenti opzioni:
Opzione | Tipu | Valore predeterminatu | Descrizzione |
---|---|---|---|
property |
Ubligatoriu | – | Nome di a pruprietà, questu pò esse una stringa o un array di strings (per esempiu, padding horizontale o margini). |
values |
Ubligatoriu | – | Lista di i valori, o una mappa se ùn vulete micca chì u nome di a classa sia u listessu cum'è u valore. Se null hè aduprata cum'è chjave di a mappa, class ùn hè micca preposta à u nome di a classe. |
class |
Opcional | nulla | Nome di a classa generata. Se ùn hè micca furnitu è property hè un array di strings, class serà predeterminatu à u primu elementu di u property array. Se ùn hè micca furnitu è property hè una stringa, i values chjavi sò usati per i class nomi. |
css-var |
Opcional | false |
Boolean per generà variabili CSS invece di regule CSS. |
css-variable-name |
Opcional | nulla | Nome persunalizatu senza prefissu per a variabile CSS in u regule. |
local-vars |
Opcional | nulla | Mappa di variabili CSS lucali per generà in più di e regule CSS. |
state |
Opcional | nulla | Lista di varianti pseudo-classi (per esempiu, :hover o :focus ) da generà. |
responsive |
Opcional | false |
Boolean chì indica se e classi responsive deve esse generate. |
rfs |
Opcional | false |
Boolean per attivà u rescaling fluidu cù RFS . |
print |
Opcional | false |
Boolean chì indica se e classi stampate anu da esse generate. |
rtl |
Opcional | true |
Boolean chì indica se l'utilità deve esse guardata in RTL. |
API spiegatu
Tutte e variàbili di utilità sò aghjuntu à a $utilities
variàbile in u nostru fogliu di _utilities.scss
stile. Ogni gruppu di utilità s'assumiglia à questu:
$utilities: (
"opacity": (
property: opacity,
values: (
0: 0,
25: .25,
50: .5,
75: .75,
100: 1,
)
)
);
Chì produce i seguenti:
.opacity-0 { opacity: 0; }
.opacity-25 { opacity: .25; }
.opacity-50 { opacity: .5; }
.opacity-75 { opacity: .75; }
.opacity-100 { opacity: 1; }
Pruprietà
A property
chjave necessaria deve esse stabilita per ogni utilità, è deve cuntene una pruprietà CSS valida. Sta pruprietà hè aduprata in u set di reguli di l'utilità generata. Quandu a class
chjave hè omessa, serve ancu cum'è u nome di classa predeterminatu. Cunsiderate l' text-decoration
utilità:
$utilities: (
"text-decoration": (
property: text-decoration,
values: none underline line-through
)
);
Output:
.text-decoration-none { text-decoration: none !important; }
.text-decoration-underline { text-decoration: underline !important; }
.text-decoration-line-through { text-decoration: line-through !important; }
I valori
Aduprate a values
chjave per specificà quale valori per u specificatu property
deve esse usatu in i nomi di classi generati è regule. Pò esse una lista o mappa (set in l'utilità o in una variable Sass).
Cum'è una lista, cum'è cù text-decoration
utilità :
values: none underline line-through
Cum'è una mappa, cum'è cù l' opacity
utilità :
values: (
0: 0,
25: .25,
50: .5,
75: .75,
100: 1,
)
Cum'è una variabile Sass chì stabilisce a lista o mappa, cum'è in i nostri position
utilità :
values: $position-values
Classe
Aduprate l' class
opzione per cambià u prefissu di classa utilizatu in u CSS compilatu. Per esempiu, per cambià da .opacity-*
a .o-*
:
$utilities: (
"opacity": (
property: opacity,
class: o,
values: (
0: 0,
25: .25,
50: .5,
75: .75,
100: 1,
)
)
);
Output:
.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
, genera classi per ognuna di e values
chjave:
$utilities: (
"visibility": (
property: visibility,
class: null,
values: (
visible: visible,
invisible: hidden,
)
)
);
Output:
.visible { visibility: visible !important; }
.invisible { visibility: hidden !important; }
Utilità variabili CSS
Impostate l' css-var
opzione booleana true
è l'API generà variabili CSS lucali per u selettore datu invece di e property: value
regule abituali. Aghjunghjite un optional css-variable-name
per stabilisce un nome variabile CSS differente da u nome di a classa.
Cunsiderate e nostre .text-opacity-*
utilità. Se aghjunghjemu l' css-variable-name
opzione, averemu un output customizatu.
$utilities: (
"text-opacity": (
css-var: true,
css-variable-name: text-alpha,
class: text-opacity,
values: (
25: .25,
50: .5,
75: .75,
100: 1
)
),
);
Output:
.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; }
Variabili CSS lucali
Aduprate l' local-vars
opzione per specificà una mappa Sass chì generà variabili CSS lucali in u settore di regule di a classe di utilità. Per piacè nutate chì pò esse bisognu di travagliu supplementu per cunsumà quelli variabili CSS lucali in e regule CSS generate. Per esempiu, cunzidira i nostri .bg-*
utilità:
$utilities: (
"background-color": (
property: background-color,
class: bg,
local-vars: (
"bg-opacity": 1
),
values: map-merge(
$utilities-bg-colors,
(
"transparent": transparent
)
)
)
);
Output:
.bg-primary {
--bs-bg-opacity: 1;
background-color: rgba(var(--bs-primary-rgb), var(--bs-bg-opacity)) !important;
}
Stati
Aduprate l' state
opzione per generà variazioni di pseudo-classe. Esempi di pseudo-classi sò :hover
è :focus
. Quandu una lista di stati hè furnita, i nomi di classi sò creati per quella pseudo-classe. Per esempiu, per cambià l'opacità nantu à u passaghju, aghjunghje state: hover
è vi vene .opacity-hover:hover
in u vostru CSS compilatu.
Avete bisognu di parechje pseudo-classi? Aduprate una lista di stati separati da spazii: state: hover focus
.
$utilities: (
"opacity": (
property: opacity,
class: opacity,
state: hover,
values: (
0: 0,
25: .25,
50: .5,
75: .75,
100: 1,
)
)
);
Output:
.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; }
Risposta
Aghjunghjite u responsive
booleanu per generà utilità responsive (per esempiu, .opacity-md-25
) in tutti i punti di rottura .
$utilities: (
"opacity": (
property: opacity,
responsive: true,
values: (
0: 0,
25: .25,
50: .5,
75: .75,
100: 1,
)
)
);
Output:
.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; }
}
Stampa
L'attivazione di l' print
opzione genererà ancu classi di utilità per a stampa, chì sò applicati solu in a @media print { ... }
media query.
$utilities: (
"opacity": (
property: opacity,
print: true,
values: (
0: 0,
25: .25,
50: .5,
75: .75,
100: 1,
)
)
);
Output:
.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; }
}
Impurtanza
Tutte e utilità generate da l'API includenu !important
per assicurà chì annullanu cumpunenti è classi di modificatori cum'è previstu. Pudete scambià stu paràmetru in u mondu cù a $enable-important-utilities
variàbile (predefinitu à true
).
Utilizà l'API
Avà chì site familiarizatu cù u funziunamentu di l'API di l'utilità, amparate cumu aghjunghje e vostre classi persunalizate è mudificà e nostre utilità predeterminate.
Override utilità
Override l'utilità esistenti usendu a stessa chjave. Per esempiu, se vulete classi di utilità di overflow responsive supplementari, pudete fà questu:
$utilities: (
"overflow": (
responsive: true,
property: overflow,
values: visible hidden scroll auto,
),
);
Aghjunghjite utilità
Novi utilità ponu esse aghjuntu à a $utilities
mappa predeterminata cù un map-merge
. Assicuratevi chì i nostri fugliali Sass richiesti è _utilities.scss
sò impurtati prima, dopu aduprate map-merge
per aghjunghje e vostre utilità supplementari. Per esempiu, quì hè cumu aghjunghje una cursor
utilità responsiva cù trè valori.
@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";
Mudificà l'utilità
Mudificà l'utilità esistenti in a mappa predeterminata $utilities
cù map-get
e map-merge
funzioni. In l'esempiu sottu, aghjustemu un valore supplementu à l' width
utilità. Accuminciate cù una iniziale map-merge
è poi specificate quale utilità vulete mudificà. Da quì, pigliate a "width"
mappa nidificata map-get
per accede è mudificà l'opzioni è i valori di l'utilità.
@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";
Abilita a risposta
Pudete attivà e classi responsive per un inseme esistente di utilità chì ùn sò micca attualmente responsive per automaticamente. Per esempiu, per fà e border
classi rispunsevuli:
@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";
Questu ora genererà variazioni responsive di .border
è .border-0
per ogni breakpoint. U vostru CSS generatu sarà cusì:
.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 { ... }
}
Rinominate l'utilità
Manca l'utilità v4, o utilizatu à un'altra cunvenzione di nomi? L'API di l'utilità pò esse usata per annullà u risultatu class
d'una utilità data, per esempiu, per .ms-*
rinominà l'utilità in 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";
Eliminate l'utilità
Eliminate qualsiasi di l'utilità predeterminate cù a map-remove()
funzione Sass .
@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";
Pudete ancu aduprà a map-merge()
funzione Sass è stabilisce a chjave di u gruppu null
per sguassà l'utilità.
@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";
Aghjunghjite, sguassà, mudificà
Pudete aghjunghje, sguassate è mudificà parechje utilità in una volta cù a map-merge()
funzione Sass . Eccu cumu pudete cumminà l'esempi precedenti in una mappa più grande.
@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";
Elimina l'utilità in RTL
Certi casi di punta facenu difficultà u stilu RTL , cum'è e rotture di linea in arabu. Cusì l'utilità ponu esse abbandunate da l'output RTL mettendu l' rtl
opzione per false
:
$utilities: (
"word-wrap": (
property: word-wrap word-break,
class: text,
values: (break: break-word),
rtl: false
),
);
Output:
/* rtl:begin:remove */
.text-break {
word-wrap: break-word !important;
word-break: break-word !important;
}
/* rtl:end:remove */
Questu ùn pruduce nunda in RTL, grazia à a direttiva remove
di cuntrollu RTLCSS .