Utility API
Utility API je nástroj založený na Sass pro generování tříd obslužných programů.
Obslužné programy Bootstrap jsou generovány pomocí našeho rozhraní API a lze je použít k úpravě nebo rozšíření naší výchozí sady tříd obslužných programů prostřednictvím Sass. Naše API nástroje je založeno na řadě map Sass a funkcích pro generování rodin tříd s různými možnostmi. Pokud nejste obeznámeni s mapami Sass, přečtěte si oficiální dokumenty Sass , abyste mohli začít.
Mapa $utilities
obsahuje všechny naše nástroje a později se sloučí s vaší vlastní $utilities
mapou, pokud existuje. Mapa nástrojů obsahuje klíčovaný seznam skupin nástrojů, které přijímají následující možnosti:
Volba | Typ | Popis |
---|---|---|
property |
Požadované | Název vlastnosti, může to být řetězec nebo pole řetězců (např. vodorovné odsazení nebo okraje). |
values |
Požadované | Seznam hodnot nebo mapa, pokud nechcete, aby byl název třídy stejný jako hodnota. Pokud null je použit jako klíč mapy, není zkompilován. |
class |
Volitelný | Proměnná pro název třídy, pokud nechcete, aby byla stejná jako vlastnost. V případě, že nezadáte class klíč a property klíč je pole řetězců, bude název třídy prvním prvkem property pole. |
state |
Volitelný | Seznam variant pseudotříd, jako je :hover nebo :focus které se mají pro nástroj vygenerovat. Žádná výchozí hodnota. |
responsive |
Volitelný | Boolean označující, zda je třeba vygenerovat responzivní třídy. false ve výchozím stavu. |
rfs |
Volitelný | Boolean pro povolení změny měřítka kapaliny. Podívejte se na stránku RFS a zjistěte, jak to funguje. false ve výchozím stavu. |
print |
Volitelný | Boolean označující, zda je třeba vygenerovat třídy tisku. false ve výchozím stavu. |
rtl |
Volitelný | Boolean označující, zda má být nástroj zachován v RTL. true ve výchozím stavu. |
Vysvětleno API
Všechny proměnné utility jsou přidány do $utilities
proměnné v naší _utilities.scss
šabloně stylů. Každá skupina nástrojů vypadá nějak takto:
$utilities: (
"opacity": (
property: opacity,
values: (
0: 0,
25: .25,
50: .5,
75: .75,
100: 1,
)
)
);
Z čehož vychází následující:
.opacity-0 { opacity: 0; }
.opacity-25 { opacity: .25; }
.opacity-50 { opacity: .5; }
.opacity-75 { opacity: .75; }
.opacity-100 { opacity: 1; }
Vlastní předpona třídy
Použijte class
možnost změnit předponu třídy použitou v kompilovaném CSS:
$utilities: (
"opacity": (
property: opacity,
class: o,
values: (
0: 0,
25: .25,
50: .5,
75: .75,
100: 1,
)
)
);
Výstup:
.o-0 { opacity: 0; }
.o-25 { opacity: .25; }
.o-50 { opacity: .5; }
.o-75 { opacity: .75; }
.o-100 { opacity: 1; }
států
Použijte state
možnost pro generování variací pseudotříd. Příkladem pseudotříd jsou :hover
a :focus
. Když je uveden seznam stavů, vytvoří se pro tuto pseudotřídu názvy tříd. Chcete-li například změnit neprůhlednost při najetí myší, přidejte state: hover
a dostanete se .opacity-hover:hover
do zkompilovaného CSS.
Potřebujete více pseudotříd? Použijte mezerami oddělený seznam stavů: state: hover focus
.
$utilities: (
"opacity": (
property: opacity,
class: opacity,
state: hover,
values: (
0: 0,
25: .25,
50: .5,
75: .75,
100: 1,
)
)
);
Výstup:
.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; }
Responzivní nástroje
Přidejte responsive
boolean a vygenerujte responzivní nástroje (např. .opacity-md-25
) napříč všemi body přerušení .
$utilities: (
"opacity": (
property: opacity,
responsive: true,
values: (
0: 0,
25: .25,
50: .5,
75: .75,
100: 1,
)
)
);
Výstup:
.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; }
}
Změna inženýrských sítí
Přepište stávající nástroje pomocí stejného klíče. Pokud například chcete další responzivní třídy obslužných programů přetečení, můžete to udělat takto:
$utilities: (
"overflow": (
responsive: true,
property: overflow,
values: visible hidden scroll auto,
),
);
Tiskové nástroje
Povolením této print
možnosti se také vygenerují pomocné třídy pro tisk, které se použijí pouze v rámci @media print { ... }
dotazu na média.
$utilities: (
"opacity": (
property: opacity,
print: true,
values: (
0: 0,
25: .25,
50: .5,
75: .75,
100: 1,
)
)
);
Výstup:
.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; }
}
Důležitost
Všechny nástroje generované rozhraním API zahrnují !important
, aby bylo zajištěno, že přepíší komponenty a třídy modifikátorů, jak bylo zamýšleno. Toto nastavení můžete globálně přepínat pomocí $enable-important-utilities
proměnné (výchozí nastavení je true
).
Pomocí API
Nyní, když jste obeznámeni s tím, jak funguje rozhraní API utilit, zjistěte, jak přidat své vlastní třídy a upravit naše výchozí nástroje.
Přidejte nástroje
Nové nástroje lze přidat do výchozí $utilities
mapy pomocí přípony map-merge
. Nejprve se ujistěte, že jsou naše požadované soubory Sass a _utilities.scss
importovány, a poté použijte map-merge
k přidání dalších nástrojů. Zde je například uvedeno, jak přidat responzivní cursor
nástroj se třemi hodnotami.
@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,
)
)
);
Upravte nástroje
Upravte stávající nástroje ve výchozí $utilities
mapě pomocí funkcí map-get
a map-merge
. V níže uvedeném příkladu přidáváme k width
utilitám další hodnotu. Začněte iniciálou map-merge
a poté určete, který nástroj chcete upravit. Odtud načtěte vnořenou "width"
mapu pomocí map-get
, abyste získali přístup k možnostem a hodnotám nástroje a upravili je.
@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%),
),
),
),
)
);
Povolit responzivní
Můžete povolit responzivní třídy pro existující sadu nástrojů, které aktuálně ve výchozím nastavení nereagují. Například, aby byly border
třídy responzivní:
@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 nyní vygeneruje responzivní varianty .border
a .border-0
pro každý bod přerušení. Váš vygenerovaný CSS bude vypadat takto:
.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 { ... }
}
Přejmenujte nástroje
Chybí vám nástroje v4 nebo jste zvyklí na jinou konvenci pojmenování? Rozhraní API utilit lze použít k přepsání výsledku class
daného obslužného programu – například k přejmenování .ms-*
utilit na staré .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 ),
),
)
);
Odstraňte nástroje
Odeberte všechny výchozí nástroje nastavením skupinového klíče na null
. Chcete-li například odebrat všechny naše width
nástroje, vytvořte $utilities
map-merge
a přidejte "width": null
do.
@import "bootstrap/scss/functions";
@import "bootstrap/scss/variables";
@import "bootstrap/scss/utilities";
$utilities: map-merge(
$utilities,
(
"width": null
)
);
Odebrat nástroj v RTL
Některé případy okrajů znesnadňují styling RTL , například zalomení řádků v arabštině. Nástroje lze tedy z výstupu RTL vypustit nastavením rtl
možnosti na false
:
$utilities: (
"word-wrap": (
property: word-wrap word-break,
class: text,
values: (break: break-word),
rtl: false
),
);
Výstup:
/* rtl:begin:remove */
.text-break {
word-wrap: break-word !important;
word-break: break-word !important;
}
/* rtl:end:remove */
Díky řídicí direktivě RTLCSS seremove
v RTL nic nevypisuje .