API sèvis piblik
API sèvis piblik la se yon zouti ki baze sou Sass pou jenere klas sèvis piblik yo.
Itilite Bootstrap yo pwodwi ak API sèvis piblik nou an epi yo ka itilize pou modifye oswa pwolonje seri klas sèvis piblik nou yo atravè Sass. API sèvis piblik nou an baze sou yon seri kat ak fonksyon Sass pou jenere fanmi klas ak divès opsyon. Si ou pa abitye ak kat Sass, li sou dokiman ofisyèl Sass yo pou kòmanse.
Kat $utilitiesjeyografik la gen tout sèvis piblik nou yo epi pita fizyone ak kat koutim ou $utilitiesa, si li prezan. Kat sèvis piblik la gen yon lis kle gwoup sèvis piblik ki aksepte opsyon sa yo:
| Opsyon | Kalite | Valè default | Deskripsyon |
|---|---|---|---|
property |
Obligatwa | – | Non pwopriyete a, sa a kapab yon fisèl oswa yon etalaj de fisèl (egzanp, padding orizontal oswa marges). |
values |
Obligatwa | – | Lis valè, oswa yon kat si ou pa vle non klas la menm ak valè a. Si nullyo itilize kòm kle kat jeyografik, li pa konpile. |
class |
Si ou vle | nil | Non klas ki te pwodwi a. Si yo pa bay epi li propertyse yon etalaj de fisèl, classyo pral default nan premye eleman nan propertyetalaj la. |
css-var |
Si ou vle | false |
Boolean pou jenere varyab CSS olye pou yo règ CSS. |
local-vars |
Si ou vle | nil | Kat varyab lokal CSS pou jenere anplis règ CSS yo. |
state |
Si ou vle | nil | Lis variants pseudo-klas (egzanp, :hoveroswa :focus) pou jenere. |
responsive |
Si ou vle | false |
Boolean ki endike si yo ta dwe pwodwi klas ki reponn. |
rfs |
Si ou vle | false |
Boolean pou pèmèt re- echèl likid ak RFS . |
print |
Si ou vle | false |
Boolean ki endike si klas enprime yo bezwen pwodwi. |
rtl |
Si ou vle | true |
Boolean ki endike si sèvis piblik yo ta dwe kenbe nan RTL. |
API eksplike
Tout varyab sèvis piblik yo ajoute nan $utilitiesvaryab la nan fèy style nou an _utilities.scss. Chak gwoup sèvis piblik sanble yon bagay tankou sa a:
$utilities: (
"opacity": (
property: opacity,
values: (
0: 0,
25: .25,
50: .5,
75: .75,
100: 1,
)
)
);
Ki pwodui sa ki annapre yo:
.opacity-0 { opacity: 0; }
.opacity-25 { opacity: .25; }
.opacity-50 { opacity: .5; }
.opacity-75 { opacity: .75; }
.opacity-100 { opacity: 1; }
Pwopriyete
Kle obligatwa propertya dwe mete pou nenpòt sèvis piblik, epi li dwe genyen yon pwopriyete CSS valab. Pwopriyete sa a yo itilize nan regleman sèvis piblik ki te pwodwi a. Lè classkle a omisyon, li sèvi tou kòm non klas la default. Konsidere text-decorationsèvis piblik la:
$utilities: (
"text-decoration": (
property: text-decoration,
values: none underline line-through
)
);
Sòti:
.text-decoration-none { text-decoration: none !important; }
.text-decoration-underline { text-decoration: underline !important; }
.text-decoration-line-through { text-decoration: line-through !important; }
Valè
Sèvi ak valueskle a pou presize ki valè pou yo espesifye propertyyo ta dwe itilize nan non klas yo ak règ yo pwodwi. Kapab yon lis oswa kat (mete nan sèvis piblik yo oswa nan yon varyab Sass).
Kòm yon lis, tankou ak text-decorationsèvis piblik :
values: none underline line-through
Kòm yon kat jeyografik, tankou ak opacitysèvis piblik :
values: (
0: 0,
25: .25,
50: .5,
75: .75,
100: 1,
)
Kòm yon varyab Sass ki mete lis la oswa kat jeyografik, tankou nan positionsèvis piblik nou yo :
values: $position-values
Klas
Sèvi ak classopsyon pou chanje prefiks klas yo itilize nan CSS konpile a. Pou egzanp, chanje soti .opacity-*nan .o-*:
$utilities: (
"opacity": (
property: opacity,
class: o,
values: (
0: 0,
25: .25,
50: .5,
75: .75,
100: 1,
)
)
);
Sòti:
.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; }
CSS sèvis piblik varyab
Mete css-varopsyon boolean an trueepi API a pral jenere varyab CSS lokal pou seleksyon yo bay olye pou yo property: valuerèg nòmal yo. Konsidere .text-opacity-*sèvis piblik nou yo:
$utilities: (
"text-opacity": (
css-var: true,
class: text-opacity,
values: (
25: .25,
50: .5,
75: .75,
100: 1
)
),
);
Sòti:
.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; }
Varyab CSS lokal yo
Sèvi ak local-varsopsyon pou presize yon kat Sass ki pral jenere varyab CSS lokal yo nan règleman klas sèvis piblik la. Tanpri sonje ke li ka mande plis travay pou konsome varyab CSS lokal sa yo nan règ CSS ki te pwodwi yo. Pou egzanp, konsidere .bg-*sèvis piblik nou yo:
$utilities: (
"background-color": (
property: background-color,
class: bg,
local-vars: (
"bg-opacity": 1
),
values: map-merge(
$utilities-bg-colors,
(
"transparent": transparent
)
)
)
);
Sòti:
.bg-primary {
--bs-bg-opacity: 1;
background-color: rgba(var(--bs-primary-rgb), var(--bs-bg-opacity)) !important;
}
Etazini
Sèvi ak stateopsyon pou jenere varyasyon pseudo-klas. Egzanp pseudo-klas yo se :hoverak :focus. Lè yo bay yon lis eta, yo kreye non klas pou pseudo-klas sa a. Pou egzanp, chanje opakite sou hover, ajoute state: hoverepi w ap jwenn .opacity-hover:hovernan CSS konpile ou a.
Bezwen plizyè pseudo-klas? Sèvi ak yon lis eta ki separe ak espas: state: hover focus.
$utilities: (
"opacity": (
property: opacity,
class: opacity,
state: hover,
values: (
0: 0,
25: .25,
50: .5,
75: .75,
100: 1,
)
)
);
Sòti:
.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; }
Reponn
Ajoute responsiveboolean an pou jenere sèvis piblik (egzanp, .opacity-md-25) atravè tout pwen rupture .
$utilities: (
"opacity": (
property: opacity,
responsive: true,
values: (
0: 0,
25: .25,
50: .5,
75: .75,
100: 1,
)
)
);
Sòti:
.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; }
}
Enprime
Pèmèt printopsyon a pral jenere tou klas sèvis piblik pou enprime, ki aplike sèlman nan @media print { ... }rechèch medya a.
$utilities: (
"opacity": (
property: opacity,
print: true,
values: (
0: 0,
25: .25,
50: .5,
75: .75,
100: 1,
)
)
);
Sòti:
.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; }
}
Enpòtans
Tout sèvis piblik ki te pwodwi pa API a gen ladan !importantyo asire yo pase sou konpozan ak klas modifye jan sa vle di. Ou ka aktive anviwònman sa a globalman ak $enable-important-utilitiesvaryab la (default nan true).
Sèvi ak API a
Kounye a ke w konnen ki jan API sèvis piblik yo fonksyone, aprann kijan pou ajoute pwòp klas ou yo epi modifye sèvis piblik nou yo.
Pase sou sèvis piblik yo
Ranplase sèvis piblik ki deja egziste lè w itilize menm kle a. Pou egzanp, si ou vle plis klas sèvis piblik ki reponn, ou ka fè sa:
$utilities: (
"overflow": (
responsive: true,
property: overflow,
values: visible hidden scroll auto,
),
);
Ajoute sèvis piblik yo
Nouvo sèvis piblik yo ka ajoute nan $utilitieskat default la ak yon map-merge. Asire w ke dosye Sass obligatwa nou yo epi _utilities.scssyo enpòte an premye, Lè sa a, sèvi ak map-mergepou ajoute sèvis piblik adisyonèl ou yo. Pou egzanp, men ki jan yo ajoute yon cursorsèvis piblik ki reponn ak twa valè.
@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,
)
)
);
Modifye sèvis piblik yo
$utilitiesModifye sèvis piblik ki egziste deja nan kat la default map-getak map-mergefonksyon. Nan egzanp ki anba a, nou ap ajoute yon valè adisyonèl nan widthsèvis piblik yo. Kòmanse ak yon inisyal map-mergeak Lè sa a, presize ki sèvis piblik ou vle modifye. "width"Soti nan la, chache kat jeyografik la enbrike ak map-getaksè ak modifye opsyon ak valè sèvis piblik la.
@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%),
),
),
),
)
);
Pèmèt reponn
Ou ka aktive klas ki reponn pou yon seri sèvis piblik ki deja egziste ki pa reponn kounye a pa default. Pa egzanp, pou rann borderklas yo reponn:
@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 ),
),
)
);
Sa a pral kounye a jenere varyasyon reponn nan .borderak .border-0pou chak breakpoint. CSS ou te pwodwi ap sanble sa a:
.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 { ... }
}
Chanje non sèvis piblik yo
Manke sèvis piblik v4, oswa itilize nan yon lòt konvansyon nonmen? Yo ka itilize API pou sèvis piblik yo pou pase sou desizyon classyon sèvis piblik bay yo—pa egzanp, pou chanje non .ms-*sèvis piblik yo an 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 ),
),
)
);
Retire sèvis piblik yo
Retire nenpòt nan sèvis piblik default yo lè w mete kle gwoup la sou null. Pou egzanp, retire tout widthsèvis piblik nou yo, kreye yon $utilities map-mergeepi ajoute "width": nullnan.
@import "bootstrap/scss/functions";
@import "bootstrap/scss/variables";
@import "bootstrap/scss/utilities";
$utilities: map-merge(
$utilities,
(
"width": null
)
);
Retire sèvis piblik nan RTL
Gen kèk ka kwen fè stil RTL difisil , tankou kase liy nan arab. Se konsa, sèvis piblik yo ka tonbe nan pwodiksyon RTL lè w mete rtlopsyon a false:
$utilities: (
"word-wrap": (
property: word-wrap word-break,
class: text,
values: (break: break-word),
rtl: false
),
);
Sòti:
/* rtl:begin:remove */
.text-break {
word-wrap: break-word !important;
word-break: break-word !important;
}
/* rtl:end:remove */
Sa a pa bay anyen nan RTL, gras a direktiv kontwòl RTLCSSremove la .