Utility API
API pripomočkov je orodje, ki temelji na Sassu, za ustvarjanje razredov pripomočkov.
Pripomočki Bootstrap so ustvarjeni z našim API-jem za pripomočke in jih je mogoče uporabiti za spreminjanje ali razširitev našega privzetega nabora razredov pripomočkov prek Sass. Naš uporabniški API temelji na seriji zemljevidov in funkcij Sass za generiranje družin razredov z različnimi možnostmi. Če niste seznanjeni z zemljevidi Sass, preberite uradne dokumente Sass , da začnete.
Zemljevid $utilities
vsebuje vse naše pripomočke in se pozneje združi z vašim $utilities
zemljevidom po meri, če je na voljo. Zemljevid pripomočkov vsebuje označen seznam skupin pripomočkov, ki sprejemajo naslednje možnosti:
Možnost | Vrsta | Opis |
---|---|---|
property |
Obvezno | Ime lastnosti, to je lahko niz ali niz nizov (npr. vodoravni oblazinjeni robovi). |
values |
Obvezno | Seznam vrednosti ali zemljevid, če ne želite, da je ime razreda enako vrednosti. Če null se uporablja kot ključ zemljevida, se ne prevede. |
class |
Neobvezno | Spremenljivka za ime razreda, če ne želite, da je enako lastnosti. Če ključa ne navedete class in property je ključ matrika nizov, bo ime razreda prvi element property matrike. |
state |
Neobvezno | Seznam variant psevdorazredov, kot je :hover ali :focus za ustvarjanje pripomočka. Ni privzete vrednosti. |
responsive |
Neobvezno | Logična vrednost, ki označuje, ali je treba ustvariti odzivne razrede. false privzeto. |
rfs |
Neobvezno | Logična vrednost za omogočanje spreminjanja velikosti tekočine. Oglejte si stran RFS , da ugotovite, kako to deluje. false privzeto. |
print |
Neobvezno | Logična vrednost, ki označuje, ali je treba ustvariti tiskalne razrede. false privzeto. |
rtl |
Neobvezno | Logična vrednost, ki označuje, ali naj se pripomoček hrani v RTL. true privzeto. |
Razložen API
Vse uporabne spremenljivke so dodane $utilities
spremenljivki v naši _utilities.scss
tabeli slogov. Vsaka skupina pripomočkov izgleda nekako takole:
$utilities: (
"opacity": (
property: opacity,
values: (
0: 0,
25: .25,
50: .5,
75: .75,
100: 1,
)
)
);
Kar izpiše naslednje:
.opacity-0 { opacity: 0; }
.opacity-25 { opacity: .25; }
.opacity-50 { opacity: .5; }
.opacity-75 { opacity: .75; }
.opacity-100 { opacity: 1; }
Predpona razreda po meri
Uporabite class
možnost za spremembo predpone razreda, uporabljene v prevedenem CSS:
$utilities: (
"opacity": (
property: opacity,
class: o,
values: (
0: 0,
25: .25,
50: .5,
75: .75,
100: 1,
)
)
);
Izhod:
.o-0 { opacity: 0; }
.o-25 { opacity: .25; }
.o-50 { opacity: .5; }
.o-75 { opacity: .75; }
.o-100 { opacity: 1; }
države
Uporabite state
možnost za ustvarjanje različic psevdorazreda. Primeri psevdorazredov so :hover
in :focus
. Ko je naveden seznam stanj, se za ta psevdorazred ustvarijo imena razredov. Na primer, če želite spremeniti motnost pri premikanju miške, dodajte state: hover
in dobili boste .opacity-hover:hover
svoj prevedeni CSS.
Potrebujete več psevdorazredov? Uporabite s presledki ločen seznam stanj: state: hover focus
.
$utilities: (
"opacity": (
property: opacity,
class: opacity,
state: hover,
values: (
0: 0,
25: .25,
50: .5,
75: .75,
100: 1,
)
)
);
Izhod:
.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; }
Odzivni pripomočki
Dodajte responsive
logično vrednost za ustvarjanje odzivnih pripomočkov (npr. .opacity-md-25
) v vseh prelomnih točkah .
$utilities: (
"opacity": (
property: opacity,
responsive: true,
values: (
0: 0,
25: .25,
50: .5,
75: .75,
100: 1,
)
)
);
Izhod:
.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; }
}
Menjava pripomočkov
Preglasite obstoječe pripomočke z uporabo istega ključa. Na primer, če želite dodatne odzivne razrede pripomočkov za prelivanje, lahko naredite to:
$utilities: (
"overflow": (
responsive: true,
property: overflow,
values: visible hidden scroll auto,
),
);
Pripomočki za tiskanje
Če omogočite print
možnost, boste ustvarili tudi razrede pripomočkov za tiskanje, ki se uporabljajo samo znotraj @media print { ... }
medijske poizvedbe.
$utilities: (
"opacity": (
property: opacity,
print: true,
values: (
0: 0,
25: .25,
50: .5,
75: .75,
100: 1,
)
)
);
Izhod:
.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; }
}
Pomembnost
Vsi pripomočki, ki jih ustvari API, vključujejo !important
, da zagotovijo, da preglasijo komponente in razrede modifikatorjev, kot je predvideno. To nastavitev lahko globalno preklopite s $enable-important-utilities
spremenljivko (privzeto na true
).
Uporaba API-ja
Zdaj, ko ste seznanjeni s tem, kako deluje API za pripomočke, se naučite, kako dodati lastne razrede po meri in spremeniti naše privzete pripomočke.
Dodajte pripomočke
Nove pripomočke je mogoče dodati privzetemu $utilities
zemljevidu z map-merge
. Prepričajte se, da so naše zahtevane datoteke Sass in _utilities.scss
najprej uvožene, nato uporabite map-merge
za dodajanje dodatnih pripomočkov. Tukaj je na primer, kako dodati odziven cursor
pripomoček s tremi vrednostmi.
@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,
)
)
);
Spremenite pripomočke
Spremenite obstoječe pripomočke v privzetem $utilities
zemljevidu s funkcijami map-get
in map-merge
. width
V spodnjem primeru pripomočkom dodajamo dodatno vrednost . Začnite z začetnico map-merge
in nato določite, kateri pripomoček želite spremeniti. Od tam pridobite ugnezdeni "width"
zemljevid z map-get
za dostop in spreminjanje možnosti in vrednosti pripomočka.
@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%),
),
),
),
)
);
Omogoči odzivnost
Odzivne razrede lahko omogočite za obstoječi nabor pripomočkov, ki trenutno privzeto niso odzivni. Na primer, da bodo border
razredi odzivni:
@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 ),
),
)
);
To bo zdaj ustvarilo odzivne različice .border
in .border-0
za vsako prelomno točko. Vaš ustvarjen CSS bo videti takole:
.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 { ... }
}
Preimenujte pripomočke
Manjkajo pripomočki v4 ali ste navajeni na drugo konvencijo poimenovanja? API za pripomočke lahko uporabite za preglasitev rezultatov class
danega pripomočka – na primer za preimenovanje .ms-*
pripomočkov v 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 ),
),
)
);
Odstranite pripomočke
Odstranite katerega koli od privzetih pripomočkov tako, da nastavite ključ skupine na null
. Na primer, če želite odstraniti vse naše width
pripomočke, ustvarite $utilities
map-merge
in dodajte "width": null
znotraj.
@import "bootstrap/scss/functions";
@import "bootstrap/scss/variables";
@import "bootstrap/scss/utilities";
$utilities: map-merge(
$utilities,
(
"width": null
)
);
Odstrani pripomoček v RTL
Nekateri robovi otežujejo oblikovanje RTL , na primer prelomi vrstic v arabščini. Tako lahko pripomočke izpustite iz izhoda RTL, tako da nastavite rtl
možnost na false
:
$utilities: (
"word-wrap": (
property: word-wrap word-break,
class: text,
values: (break: break-word),
rtl: false
),
);
Izhod:
/* rtl:begin:remove */
.text-break {
word-wrap: break-word !important;
word-break: break-word !important;
}
/* rtl:end:remove */
To ne izpiše ničesar v RTL, zahvaljujoč nadzorni direktivi RTLCSSremove
.