Ugrás a fő tartalomhoz Ugrás a dokumentumok navigációjához
Check
in English

Utility API

A segédprogram API egy Sass-alapú eszköz a segédprogram-osztályok generálására.

A Bootstrap segédprogramok a segédprogram API-nkkal jönnek létre, és a Sass segítségével módosíthatók vagy bővíthetők az alapértelmezett segédprogram-osztályaink. Segédprogram-API-nk Sass térképek és függvények sorozatán alapul, amelyek különféle opciókkal rendelkező osztálycsaládokat generálnak. Ha nem ismeri a Sass térképeket, a kezdéshez olvassa el a hivatalos Sass dokumentumokat .

A $utilitiestérkép tartalmazza az összes segédprogramunkat, és később egyesül az egyéni $utilitiestérképével, ha van. A segédprogram térkép a segédprogramcsoportok kulcsos listáját tartalmazza, amelyek a következő opciókat fogadják el:

választási lehetőség típus Alapértelmezett érték Leírás
property Kívánt A tulajdonság neve, ez lehet egy karakterlánc vagy karakterláncok tömbje (pl. vízszintes kitöltés vagy margó).
values Kívánt Értékek listája, vagy térkép, ha nem szeretné, hogy az osztálynév megegyezzen az értékkel. Ha nullleképezési kulcsként használatos, classakkor nincs az osztálynév elé fűzve.
class Választható nulla A generált osztály neve. Ha nincs megadva, és propertyez egy karakterlánc tömbje, classakkor alapértelmezés szerint a propertytömb első eleme lesz. Ha nincs megadva, és propertyez egy karakterlánc, akkor a valueskulcsokat a nevekként használják class.
css-var Választható false Logikai érték CSS-változók generálásához CSS-szabályok helyett.
css-variable-name Választható nulla Egyéni előtag nélküli név a CSS-változóhoz a szabálykészleten belül.
local-vars Választható nulla A CSS-szabályok mellett generálandó helyi CSS-változók térképe.
state Választható nulla A generálandó pszeudoosztály-változatok listája (pl. :hovervagy :focus).
responsive Választható false Logikai érték, amely azt jelzi, hogy kell-e reszponzív osztályokat generálni.
rfs Választható false Logikai érték, amely lehetővé teszi a folyadék átskálázást RFS-sel .
print Választható false Logikai érték azt jelzi, hogy szükség van-e nyomtatási osztályok létrehozására.
rtl Választható true Logikai érték azt jelzi, hogy a segédprogramot az RTL-ben kell-e tartani.

Az API elmagyarázta

Minden segédváltozó hozzáadásra kerül a stíluslapunkon $utilitiesbelüli változóhoz . _utilities.scssA segédprogramok mindegyik csoportja így néz ki:

$utilities: (
  "opacity": (
    property: opacity,
    values: (
      0: 0,
      25: .25,
      50: .5,
      75: .75,
      100: 1,
    )
  )
);

Ami a következőket adja ki:

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

Ingatlan

A szükséges propertykulcsot minden segédprogramhoz be kell állítani, és érvényes CSS-tulajdonságot kell tartalmaznia. Ezt a tulajdonságot a generált segédprogram szabálykészlete használja. Ha a classkulcsot kihagyjuk, az alapértelmezett osztálynévként is szolgál. Fontolja meg a text-decorationsegédprogramot:

$utilities: (
  "text-decoration": (
    property: text-decoration,
    values: none underline line-through
  )
);

Kimenet:

.text-decoration-none { text-decoration: none !important; }
.text-decoration-underline { text-decoration: underline !important; }
.text-decoration-line-through { text-decoration: line-through !important; }

Értékek

A valueskulccsal adja meg, hogy a megadotthoz mely értékeket propertykell használni a generált osztálynevekben és szabályokban. Lehet lista vagy térkép (a segédprogramokban vagy egy Sass változóban beállítva).

Listaként, mint a text-decorationsegédprogramoknál :

values: none underline line-through

Térképként, mint a opacitysegédprogramoknál :

values: (
  0: 0,
  25: .25,
  50: .5,
  75: .75,
  100: 1,
)

Sass-változóként, amely beállítja a listát vagy a térképet, mint a positionsegédprogramjainkban :

values: $position-values

Osztály

Használja a classlehetőséget a lefordított CSS-ben használt osztály előtag módosítására. Például átváltani a .opacity-*következőről .o-*:

$utilities: (
  "opacity": (
    property: opacity,
    class: o,
    values: (
      0: 0,
      25: .25,
      50: .5,
      75: .75,
      100: 1,
    )
  )
);

Kimenet:

.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; }

Ha class: null, osztályokat generál az egyes valueskulcsokhoz:

$utilities: (
  "visibility": (
    property: visibility,
    class: null,
    values: (
      visible: visible,
      invisible: hidden,
    )
  )
);

Kimenet:

.visible { visibility: visible !important; }
.invisible { visibility: hidden !important; }

CSS változó segédprogramok

Állítsa be a css-varlogikai értéket, trueés az API helyi CSS-változókat generál az adott szelektorhoz a szokásos property: valueszabályok helyett. Adjon hozzá egy nem kötelezőt css-variable-name, ha az osztálynévtől eltérő CSS-változónevet szeretne megadni.

Vegye figyelembe a .text-opacity-*közüzemi szolgáltatásainkat. Ha hozzáadjuk a css-variable-namelehetőséget, egyéni kimenetet kapunk.

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

Kimenet:

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

Helyi CSS-változók

Ezzel a local-varsbeállítással megadhat egy Sass-leképezést, amely helyi CSS-változókat generál a segédprogram-osztály szabálykészletén belül. Kérjük, vegye figyelembe, hogy további munkát igényelhet a helyi CSS-változók felhasználása a generált CSS-szabályokban. Vegyük például a .bg-*segédprogramjainkat:

$utilities: (
  "background-color": (
    property: background-color,
    class: bg,
    local-vars: (
      "bg-opacity": 1
    ),
    values: map-merge(
      $utilities-bg-colors,
      (
        "transparent": transparent
      )
    )
  )
);

Kimenet:

.bg-primary {
  --bs-bg-opacity: 1;
  background-color: rgba(var(--bs-primary-rgb), var(--bs-bg-opacity)) !important;
}

Államok

Használja az stateopciót pszeudoosztályváltozatok generálásához. Pszeudoosztályok például a :hoverés :focus. Ha megadja az állapotok listáját, akkor az adott pszeudoosztályhoz osztálynevek jönnek létre. Például az átlátszatlanság megváltoztatásához az egérmutató lebegtetése közben adja hozzá, state: hoverés megkapja .opacity-hover:hovera lefordított CSS-t.

Több pszeudoosztályra van szüksége? Használja az állapotok szóközzel elválasztott listáját: state: hover focus.

$utilities: (
  "opacity": (
    property: opacity,
    class: opacity,
    state: hover,
    values: (
      0: 0,
      25: .25,
      50: .5,
      75: .75,
      100: 1,
    )
  )
);

Kimenet:

.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; }

Fogékony

Adja hozzá a responsivelogikai értéket érzékeny segédprogramok (pl. .opacity-md-25) létrehozásához az összes törésponton .

$utilities: (
  "opacity": (
    property: opacity,
    responsive: true,
    values: (
      0: 0,
      25: .25,
      50: .5,
      75: .75,
      100: 1,
    )
  )
);

Kimenet:

.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; }
}

Nyomtatás

printAz opció engedélyezése segédprogramosztályokat is generál a nyomtatáshoz, amelyek csak a médialekérdezésben kerülnek alkalmazásra @media print { ... }.

$utilities: (
  "opacity": (
    property: opacity,
    print: true,
    values: (
      0: 0,
      25: .25,
      50: .5,
      75: .75,
      100: 1,
    )
  )
);

Kimenet:

.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; }
}

Fontosság

Az API által generált összes segédprogram !importantgondoskodik arról, hogy a szándék szerint felülírják az összetevőket és módosító osztályokat. Ezt a beállítást globálisan átkapcsolhatja a $enable-important-utilitiesváltozóval (alapértelmezés szerint true).

Az API használata

Most, hogy ismeri a segédprogramok API működését, tanulja meg, hogyan adhat hozzá egyéni osztályokat, és hogyan módosíthatja alapértelmezett segédprogramjainkat.

Segédprogramok felülbírálása

A meglévő segédprogramok felülbírálása ugyanazzal a kulccsal. Ha például további reszponzív túlcsordulási segédprogram-osztályokat szeretne, megteheti:

$utilities: (
  "overflow": (
    responsive: true,
    property: overflow,
    values: visible hidden scroll auto,
  ),
);

Segédprogramok hozzáadása

Új segédprogramok adhatók hozzá az alapértelmezett $utilitiestérképhez egy map-merge. Győződjön meg arról, hogy a szükséges Sass fájljainkat és _utilities.scsselőször importálta, majd használja a map-mergetovábbi segédprogramok hozzáadásához. Például a következőképpen adhat hozzá egy cursorhárom értékkel rendelkező reszponzív segédprogramot.

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

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

@import "bootstrap/scss/utilities/api";

Segédprogramok módosítása

Módosítsa a meglévő segédprogramokat az alapértelmezett $utilitiestérképen a map-getés map-mergefüggvényekkel. Az alábbi példában egy további értéket adunk a widthsegédprogramokhoz. Kezdje a kezdőbetűvel map-merge, majd adja meg, hogy melyik segédprogramot szeretné módosítani. Innentől töltse le a beágyazott "width"térképet a segítségével, map-gethogy elérje és módosítsa a segédprogram beállításait és értékeit.

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

@import "bootstrap/scss/utilities/api";

Reszponzív engedélyezése

Engedélyezheti a reszponzív osztályokat olyan meglévő segédprogram-készlethez, amely alapértelmezés szerint jelenleg nem reagál. Például, hogy az borderosztályok érzékenyek legyenek:

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

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

@import "bootstrap/scss/utilities/api";

.borderEz most minden .border-0törésponthoz érzékeny variációkat fog generálni . A létrehozott CSS így fog kinézni:

.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 { ... }
}

Segédprogramok átnevezése

Hiányoznak a v4 segédprogramok, vagy más elnevezési konvencióhoz szokott? A segédprogramok API használható classegy adott segédprogram eredményének felülbírálására – például a .ms-*segédprogramok régire átnevezésére .ml-*:

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

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

@import "bootstrap/scss/utilities/api";

Távolítsa el a segédprogramokat

Távolítson el minden alapértelmezett segédprogramot a map-remove()Sass függvénnyel .

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

// Remove multiple utilities with a comma-separated list
$utilities: map-remove($utilities, "width", "float");

@import "bootstrap/scss/utilities/api";

A segédprogram eltávolításához használhatja a map-merge()Sass függvényt is , és beállíthatja a csoportkulcsot a -ra.null

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

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

@import "bootstrap/scss/utilities/api";

Hozzáadás, eltávolítás, módosítás

map-merge()A Sass funkcióval egyszerre több segédprogramot is hozzáadhat, eltávolíthat és módosíthat . Így kombinálhatja az előző példákat egy nagyobb térképpé.

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

$utilities: map-merge(
  $utilities,
  (
    // Remove the `width` utility
    "width": null,

    // Make an existing utility responsive
    "border": map-merge(
      map-get($utilities, "border"),
      ( responsive: true ),
    ),

    // Add new utilities
    "cursor": (
      property: cursor,
      class: cursor,
      responsive: true,
      values: auto pointer grab,
    )
  )
);

@import "bootstrap/scss/utilities/api";

Távolítsa el a segédprogramot az RTL-ben

Egyes éles esetek megnehezítik az RTL-stílus kialakítását , például a sortörések arabul. Így a segédprogramok az RTL kimenetről kihagyhatók a következő rtlbeállítással false:

$utilities: (
  "word-wrap": (
    property: word-wrap word-break,
    class: text,
    values: (break: break-word),
    rtl: false
  ),
);

Kimenet:

/* rtl:begin:remove */
.text-break {
  word-wrap: break-word !important;
  word-break: break-word !important;
}
/* rtl:end:remove */

Ez nem ad ki semmit RTL-ben, köszönhetően az RTLCSS removevezérlődirektívának .