Преминете към основното съдържание Преминете към навигацията с документи
Check
in English

API за помощни програми

API за помощни програми е базиран на Sass инструмент за генериране на класове за помощни програми.

Помощните програми Bootstrap се генерират с нашия API за помощни програми и могат да се използват за модифициране или разширяване на нашия набор от помощни класове по подразбиране чрез Sass. Нашият помощен API е базиран на серия от Sass карти и функции за генериране на семейства от класове с различни опции. Ако не сте запознати с картите на Sass, прочетете официалните документи на Sass , за да започнете.

Картата $utilitiesсъдържа всички наши помощни програми и по-късно се обединява с вашата персонализирана $utilitiesкарта, ако има такава. Картата на помощните програми съдържа списък с ключове от групи помощни програми, които приемат следните опции:

опция Тип Стойност по подразбиране Описание
property Задължително Име на свойството, това може да бъде низ или масив от низове (напр. хоризонтални подложки или полета).
values Задължително Списък със стойности или карта, ако не искате името на класа да е същото като стойността. Ако nullсе използва като ключ за карта, classне се добавя към името на класа.
class Не е задължително нула Име на генерирания клас. Ако не е предоставен и propertyе масив от низове, classпо подразбиране ще се използва първият елемент от propertyмасива. Ако не е предоставен и propertyе низ, valuesключовете се използват за classимената.
css-var Не е задължително false Булева стойност за генериране на CSS променливи вместо CSS правила.
css-variable-name Не е задължително нула Персонализирано име без префикс за CSS променливата в набора от правила.
local-vars Не е задължително нула Карта на локални CSS променливи за генериране в допълнение към CSS правилата.
state Не е задължително нула Списък с варианти на псевдокласове (напр. :hoverили :focus), които да се генерират.
responsive Не е задължително false Булева стойност, указваща дали трябва да се генерират адаптивни класове.
rfs Не е задължително false Булева стойност за активиране на течно мащабиране с RFS .
print Не е задължително false Булева стойност, показваща дали трябва да се генерират класове за печат.
rtl Не е задължително true Булева стойност, показваща дали помощната програма трябва да се съхранява в RTL.

API обяснено

Всички помощни променливи се добавят към $utilitiesпроменливата в нашата таблица със _utilities.scssстилове. Всяка група помощни програми изглежда по следния начин:

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

Което извежда следното:

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

Имот

Необходимият propertyключ трябва да бъде зададен за всяка помощна програма и трябва да съдържа валидно CSS свойство. Това свойство се използва в набора от правила на генерираната помощна програма. Когато classключът е пропуснат, той също служи като име на клас по подразбиране. Помислете за text-decorationполезността:

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

Изход:

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

Стойности

Използвайте valuesключа, за да посочите кои стойности за указаното propertyтрябва да се използват в генерираните имена на класове и правила. Може да бъде списък или карта (зададена в помощните програми или в променлива на Sass).

Като списък, като с text-decorationпомощните програми :

values: none underline line-through

Като карта, като с opacityпомощни програми :

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

Като променлива Sass, която задава списъка или картата, както в нашите positionпомощни програми :

values: $position-values

Клас

Използвайте classопцията за промяна на префикса на класа, използван в компилирания CSS. Например, за да промените от .opacity-*на .o-*:

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

Изход:

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

Ако class: null, генерира класове за всеки от valuesключовете:

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

Изход:

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

Помощни програми за CSS променливи

Задайте css-varбулевата опция на trueи API ще генерира локални CSS променливи за дадения селектор вместо обичайните property: valueправила. Добавете опция css-variable-nameза задаване на име на CSS променлива, различно от името на класа.

Помислете за нашите .text-opacity-*комунални услуги. Ако добавим css-variable-nameопцията, ще получим персонализиран изход.

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

Изход:

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

Локални CSS променливи

Използвайте local-varsопцията, за да посочите Sass карта, която ще генерира локални CSS променливи в рамките на набора от правила на класа на помощната програма. Моля, имайте предвид, че може да е необходима допълнителна работа, за да се използват тези локални CSS променливи в генерираните CSS правила. Например, разгледайте нашите .bg-*помощни програми:

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

Изход:

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

държави

Използвайте stateопцията за генериране на варианти на псевдокласове. Примерни псевдо-класове са :hoverи :focus. Когато се предостави списък със състояния, се създават имена на класове за този псевдоклас. Например, за да промените непрозрачността при задържане на мишката, добавете state: hoverи ще получите .opacity-hover:hoverсвоя компилиран CSS.

Имате нужда от множество псевдо-класове? Използвайте разделен с интервал списък със състояния: state: hover focus.

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

Изход:

.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булевото значение за генериране на отзивчиви помощни програми (напр. .opacity-md-25) във всички точки на прекъсване .

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

Изход:

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

Печат

Активирането на printопцията също така ще генерира класове за помощ за печат, които се прилагат само в @media print { ... }медийната заявка.

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

Изход:

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

Важност

Всички помощни програми, генерирани от API, включват !important, за да се гарантира, че заменят компонентите и класовете модификатори по предназначение. Можете да превключвате тази настройка глобално с $enable-important-utilitiesпроменливата (по подразбиране е true).

Използване на API

Сега, след като сте запознати с това как работи API на помощните програми, научете как да добавяте свои собствени персонализирани класове и да променяте нашите помощни програми по подразбиране.

Замяна на помощни програми

Заменете съществуващите помощни програми, като използвате същия ключ. Например, ако искате допълнителни отзивчиви помощни класове за препълване, можете да направите това:

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

Добавете помощни програми

Нови помощни програми могат да се добавят към $utilitiesкартата по подразбиране с map-merge. Уверете се, че нашите необходими Sass файлове и _utilities.scssпърво са импортирани, след което използвайте, за map-mergeда добавите вашите допълнителни помощни програми. Например, ето как да добавите отзивчива cursorпомощна програма с три стойности.

@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";

Променете помощните програми

$utilitiesПроменете съществуващите помощни програми в картата по подразбиране с функции map-getи map-merge. В примера по-долу добавяме допълнителна стойност към widthпомощните програми. Започнете с инициал map-mergeи след това посочете коя помощна програма искате да промените. Оттам изтеглете вложената "width"карта, за map-getда получите достъп и да промените опциите и стойностите на помощната програма.

@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";

Активиране на отзивчивостта

Можете да активирате отзивчиви класове за съществуващ набор от помощни програми, които в момента не реагират по подразбиране. Например, за да направите borderкласовете отзивчиви:

@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";

Това вече ще генерира отзивчиви варианти на .borderи .border-0за всяка точка на прекъсване. Вашият генериран CSS ще изглежда така:

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

Преименуване на помощни програми

Липсват v4 помощни програми или се използва друга конвенция за именуване? API на помощните програми може да се използва за замяна на резултата classот дадена помощна програма – например, за преименуване .ms-*на помощни програми на oldish .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";

Премахнете помощните програми

Премахнете всяка от помощните програми по подразбиране с функцията map-remove()Sass .

@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";

Можете също да използвате функцията map-merge()Sass и да зададете груповия ключ на , за 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";

Добавяне, премахване, промяна

Можете да добавяте, премахвате и модифицирате много помощни програми наведнъж с функцията map-merge()Sass . Ето как можете да комбинирате предишните примери в една по-голяма карта.

@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";

Премахнете помощната програма в RTL

Някои крайни случаи затрудняват стилизирането на RTL , като например прекъсване на редове на арабски. По този начин помощните програми могат да бъдат премахнати от RTL изхода чрез задаване на rtlопцията на false:

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

Изход:

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

Това не извежда нищо в RTL, благодарение на контролната директива RTLCSSremove .