Utility API
Uslužni API je alat baziran na Sass-u za generiranje uslužnih klasa.
Bootstrap uslužni programi se generiraju pomoću našeg uslužnog API-ja i mogu se koristiti za izmjenu ili proširenje našeg zadanog skupa uslužnih klasa putem Sass-a. Naš uslužni API je baziran na nizu Sass mapa i funkcija za generiranje porodica klasa sa različitim opcijama. Ako niste upoznati sa Sass mapama, pročitajte službene Sass dokumente da započnete.
Mapa sadrži sve naše uslužne programe i kasnije se $utilitiesspaja s vašom prilagođenom $utilitiesmapom, ako postoji. Mapa uslužnih programa sadrži ključnu listu grupa komunalnih usluga koje prihvataju sljedeće opcije:
| Opcija | Tip | Opis |
|---|---|---|
property |
Obavezno | Ime svojstva, ovo može biti string ili niz stringova (npr. horizontalni dopuni ili margine). |
values |
Obavezno | Lista vrijednosti ili mapa ako ne želite da ime klase bude isto kao vrijednost. Ako nullse koristi kao ključ mape, ne kompajlira se. |
class |
Opciono | Varijabla za ime klase ako ne želite da bude isto kao svojstvo. U slučaju da ne navedete classključ, a propertyključ je niz stringova, ime klase će biti prvi element propertyniza. |
state |
Opciono | Lista varijanti pseudo-klase poput :hoverili :focusza generiranje za pomoćni program. Nema zadane vrijednosti. |
responsive |
Opciono | Boolean koji pokazuje da li je potrebno generirati responzivne klase. falsepo defaultu. |
rfs |
Opciono | Boolean za omogućavanje ponovnog skaliranja tekućine. Pogledajte stranicu RFS da saznate kako ovo funkcionira. falsepo defaultu. |
print |
Opciono | Boolean koji pokazuje da li je potrebno generirati klase ispisa. falsepo defaultu. |
rtl |
Opciono | Boolean koji pokazuje da li uslužni program treba zadržati u RTL-u. truepo defaultu. |
API objasnio
Sve uslužne varijable se dodaju $utilitiesvarijabli unutar našeg _utilities.scssstila. Svaka grupa uslužnih programa izgleda otprilike ovako:
$utilities: (
"opacity": (
property: opacity,
values: (
0: 0,
25: .25,
50: .5,
75: .75,
100: 1,
)
)
);
Što daje sljedeće:
.opacity-0 { opacity: 0; }
.opacity-25 { opacity: .25; }
.opacity-50 { opacity: .5; }
.opacity-75 { opacity: .75; }
.opacity-100 { opacity: 1; }
Prilagođeni prefiks klase
Koristite classopciju da promijenite prefiks klase koji se koristi u prevedenom CSS-u:
$utilities: (
"opacity": (
property: opacity,
class: o,
values: (
0: 0,
25: .25,
50: .5,
75: .75,
100: 1,
)
)
);
Izlaz:
.o-0 { opacity: 0; }
.o-25 { opacity: .25; }
.o-50 { opacity: .5; }
.o-75 { opacity: .75; }
.o-100 { opacity: 1; }
države
Koristite stateopciju za generiranje varijacija pseudo-klase. Primjeri pseudoklasa su :hoveri :focus. Kada se pruži lista stanja, kreiraju se imena klasa za tu pseudo-klasu. Na primjer, da promijenite neprozirnost pri lebdenju, dodajte state: hoveri ući ćete .opacity-hover:hoveru svoj prevedeni CSS.
Trebate više pseudo-klasa? Koristite listu stanja razdvojenu razmakom: state: hover focus.
$utilities: (
"opacity": (
property: opacity,
class: opacity,
state: hover,
values: (
0: 0,
25: .25,
50: .5,
75: .75,
100: 1,
)
)
);
Izlaz:
.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; }
Responsive utilities
Dodajte responsiveboolean za generiranje odgovarajućih uslužnih programa (npr. .opacity-md-25) u svim tačkama prekida .
$utilities: (
"opacity": (
property: opacity,
responsive: true,
values: (
0: 0,
25: .25,
50: .5,
75: .75,
100: 1,
)
)
);
Izlaz:
.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; }
}
Promjena komunalnih usluga
Zaobiđite postojeće uslužne programe koristeći isti ključ. Na primjer, ako želite dodatne responzivne uslužne klase za prelijevanje, možete učiniti ovo:
$utilities: (
"overflow": (
responsive: true,
property: overflow,
values: visible hidden scroll auto,
),
);
Uslužni programi za štampanje
Omogućavanje printopcije će takođe generisati uslužne klase za štampanje, koje se primenjuju samo u okviru @media print { ... }upita za medije.
$utilities: (
"opacity": (
property: opacity,
print: true,
values: (
0: 0,
25: .25,
50: .5,
75: .75,
100: 1,
)
)
);
Izlaz:
.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; }
}
Važnost
Svi uslužni programi koje generira API uključuju !importantkako bi se osiguralo da nadjačavaju komponente i klase modifikatora kako je predviđeno. Ovu postavku možete globalno promijeniti pomoću $enable-important-utilitiesvarijable (podrazumevano na true).
Korištenje API-ja
Sada kada ste upoznati s načinom na koji API uslužnih programa radi, naučite kako dodati vlastite prilagođene klase i modificirati naše zadane uslužne programe.
Dodajte uslužne programe
Novi uslužni programi se mogu dodati na zadanu $utilitieskartu sa map-merge. Provjerite _utilities.scssjesu li naše potrebne Sass datoteke i prvo uvezene, a zatim koristite map-mergeza dodavanje dodatnih uslužnih programa. Na primjer, evo kako dodati odgovarajući cursoruslužni program s tri vrijednosti.
@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,
)
)
);
Modificirajte uslužne programe
Izmijenite postojeće uslužne programe u zadanoj $utilitiesmapi sa map-geti map-mergefunkcijama. U donjem primjeru dodajemo dodatnu vrijednost widthuslužnim programima. Počnite s inicijalom map-merge, a zatim odredite koji uslužni program želite izmijeniti. Odatle dohvatite ugniježđenu "width"kartu pomoću map-getda biste pristupili i izmijenili opcije i vrijednosti uslužnog programa.
@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%),
),
),
),
)
);
Omogući odgovor
Možete omogućiti responzivne klase za postojeći skup uslužnih programa koji trenutno ne reagiraju prema zadanim postavkama. Na primjer, da bi borderklase bile prilagodljive:
@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 ),
),
)
);
Ovo će sada generirati prilagodljive varijacije .borderi .border-0za svaku tačku prekida. Vaš generirani CSS će izgledati ovako:
.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 uslužne programe
Nedostaju v4 uslužni programi ili ste navikli na drugu konvenciju imenovanja? API uslužnih programa može se koristiti za nadjačavanje rezultata classdatog uslužnog programa—na primjer, za preimenovanje .ms-*uslužnih programa u 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 ),
),
)
);
Uklonite uslužne programe
Uklonite bilo koji od zadanih uslužnih programa postavljanjem ključa grupe na null. Na primjer, da biste uklonili sve naše widthuslužne programe, kreirajte $utilities map-mergei dodajte "width": nullunutar.
@import "bootstrap/scss/functions";
@import "bootstrap/scss/variables";
@import "bootstrap/scss/utilities";
$utilities: map-merge(
$utilities,
(
"width": null
)
);
Uklonite uslužni program u RTL-u
Neki rubni slučajevi otežavaju RTL stilizaciju , kao što su prijelomi linija na arapskom. Stoga se uslužni programi mogu izostaviti iz RTL izlaza postavljanjem rtlopcije na false:
$utilities: (
"word-wrap": (
property: word-wrap word-break,
class: text,
values: (break: break-word),
rtl: false
),
);
Izlaz:
/* rtl:begin:remove */
.text-break {
word-wrap: break-word !important;
word-break: break-word !important;
}
/* rtl:end:remove */
Ovo ne daje ništa u RTL-u, zahvaljujući RTLCSS removekontrolnoj direktivi .