Passà à u cuntenutu principale Salta à a navigazione di documenti
in English

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 $utilitiesmappa cuntene tutte e nostre utilità è hè più tardi unitu cù a vostra $utilitiesmappa 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 nullhè adupratu cum'è chjave di a mappa, ùn hè micca compilatu.
class Opcional nulla Nome di a classa generata. Se ùn hè micca furnitu è property​​hè un array di strings, classserà predeterminatu à u primu elementu di u propertyarray.
css-var Opcional false Boolean per generà variabili CSS invece di regule CSS.
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, :hovero :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 $utilitiesvariàbile in u nostru fogliu di _utilities.scssstile. 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 propertychjave 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 classchjave hè omessa, serve ancu cum'è u nome di classa predeterminatu. Cunsiderate l' text-decorationutilità:

$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 valueschjave per specificà quale valori per u specificatu propertydeve esse usatu in i nomi di classi generati è regule. Pò esse una lista o mappa (set in l'utilità o in una variabile Sass).

Cum'è una lista, cum'è cù l' text-decorationutilità :

values: none underline line-through

Cum'è una mappa, cum'è cù l' opacityutilità :

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 positionutilità :

values: $position-values

Classe

Aduprate l' classopzione per cambià u prefissu di classa utilizatu in u CSS compilatu. Per esempiu, per cambià da .opacity-*à .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; }

Utilità variabili CSS

Impostate l' css-varopzione booleana trueè l'API generà variabili CSS lucali per u selettore datu invece di e property: valueregule abituali. Cunsiderate e nostre .text-opacity-*utilità:

$utilities: (
  "text-opacity": (
    css-var: true,
    class: text-opacity,
    values: (
      25: .25,
      50: .5,
      75: .75,
      100: 1
    )
  ),
);

Output:

.text-opacity-25 { --bs-text-opacity: .25; }
.text-opacity-50 { --bs-text-opacity: .5; }
.text-opacity-75 { --bs-text-opacity: .75; }
.text-opacity-100 { --bs-text-opacity: 1; }

Variabili CSS lucali

Aduprate l' local-varsopzione 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' stateopzione 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:hoverin 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 responsiveboolean 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' printopzione 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 !importantper assicurà chì annullanu cumpunenti è classi di modificatori cum'è previstu. Pudete scambià stu paràmetru in u mondu cù a $enable-important-utilitiesvarià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 $utilitiesmappa predeterminata cù un map-merge. Assicuratevi chì i nostri fugliali Sass richiesti è _utilities.scsssò impurtati prima, dopu aduprate map-mergeper aghjunghje e vostre utilità supplementari. Per esempiu, quì hè cumu aghjunghje una cursorutilità responsiva cù trè valori.

@import "bootstrap/scss/functions";
@import "bootstrap/scss/variables";
@import "bootstrap/scss/utilities";

$utilities: map-merge(
  $utilities,
  (
    "cursor": (
      property: cursor,
      class: cursor,
      responsive: true,
      values: auto pointer grab,
    )
  )
);

Mudificà l'utilità

Mudificà l'utilità esistenti in a mappa predeterminata $utilitiesmap-gete map-mergefunzioni. In l'esempiu sottu, aghjustemu un valore supplementu à l' widthutilità. Accuminciate cù una iniziale map-mergeè poi specificate quale utilità vulete mudificà. Da quì, pigliate a "width"mappa nidificata map-getper accede è mudificà l'opzioni è i valori di l'utilità.

@import "bootstrap/scss/functions";
@import "bootstrap/scss/variables";
@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%),
        ),
      ),
    ),
  )
);

Attivà 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 borderclassi rispunsevuli:

@import "bootstrap/scss/functions";
@import "bootstrap/scss/variables";
@import "bootstrap/scss/utilities";

$utilities: map-merge(
  $utilities, (
    "border": map-merge(
      map-get($utilities, "border"),
      ( responsive: true ),
    ),
  )
);

Questu ora genererà variazioni responsive di .borderè .border-0per 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 classd'una utilità data, per esempiu, per .ms-*rinominà l'utilità in oldish .ml-*:

@import "bootstrap/scss/functions";
@import "bootstrap/scss/variables";
@import "bootstrap/scss/utilities";

$utilities: map-merge(
  $utilities, (
    "margin-start": map-merge(
      map-get($utilities, "margin-start"),
      ( class: ml ),
    ),
  )
);

Eliminate l'utilità

Eliminate qualsiasi di l'utilità predeterminate mettendu a chjave di u gruppu in null. Per esempiu, per sguassà tutte e nostre widthutilità, crea un $utilities map-mergeè aghjunghje "width": nullin.

@import "bootstrap/scss/functions";
@import "bootstrap/scss/variables";
@import "bootstrap/scss/utilities";

$utilities: map-merge(
  $utilities,
  (
    "width": null
  )
);

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' rtlopzione 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 removedi cuntrollu RTLCSS .