Перейти до основного вмісту Перейти до навігації документами
in English

компоненти

Дізнайтеся, як і чому ми створюємо майже всі наші компоненти адаптивно та з базовими класами та класами-модифікаторами.

Базові класи

Компоненти Bootstrap здебільшого побудовані за номенклатурою базових модифікаторів. Ми групуємо якомога більше спільних властивостей у базовий клас, наприклад .btn, а потім групуємо окремі стилі для кожного варіанту в класи-модифікатори, наприклад .btn-primaryабо .btn-success.

Щоб побудувати наші класи-модифікатори, ми використовуємо @eachцикли Sass для повторення карти Sass. Це особливо корисно для генерації варіантів компонента нашими $theme-colorsта створення адаптивних варіантів для кожної точки зупину. Коли ви налаштовуєте ці карти Sass і перекомпілюєте, ви автоматично побачите свої зміни, відображені в цих циклах.

Ознайомтеся з нашими документами про карти та цикли Sass, щоб дізнатися, як налаштувати ці цикли та розширити підхід базового модифікатора Bootstrap до вашого власного коду.

Модифікатори

Багато компонентів Bootstrap створено за допомогою підходу класу базового модифікатора. Це означає, що основна частина стилів міститься в базовому класі (наприклад, .btn), тоді як варіації стилів обмежуються класами-модифікаторами (наприклад, .btn-danger). Ці класи модифікаторів створені на основі $theme-colorsкарти, щоб налаштувати кількість і назву наших класів модифікаторів.

Ось два приклади того, як ми проходимо по $theme-colorsкарті, щоб створити модифікатори для компонентів .alertі ..list-group

// Generate contextual modifier classes for colorizing the alert.

@each $state, $value in $theme-colors {
  $alert-background: shift-color($value, $alert-bg-scale);
  $alert-border: shift-color($value, $alert-border-scale);
  $alert-color: shift-color($value, $alert-color-scale);
  @if (contrast-ratio($alert-background, $alert-color) < $min-contrast-ratio) {
    $alert-color: mix($value, color-contrast($alert-background), abs($alert-color-scale));
  }
  .alert-#{$state} {
    @include alert-variant($alert-background, $alert-border, $alert-color);
  }
}
// List group contextual variants
//
// Add modifier classes to change text and background color on individual items.
// Organizationally, this must come after the `:hover` states.

@each $state, $value in $theme-colors {
  $list-group-variant-bg: shift-color($value, $list-group-item-bg-scale);
  $list-group-variant-color: shift-color($value, $list-group-item-color-scale);
  @if (contrast-ratio($list-group-variant-bg, $list-group-variant-color) < $min-contrast-ratio) {
    $list-group-variant-color: mix($value, color-contrast($list-group-variant-bg), abs($list-group-item-color-scale));
  }

  @include list-group-item-variant($state, $list-group-variant-bg, $list-group-variant-color);
}

Чуйний

Ці цикли Sass також не обмежуються кольоровими картами. Ви також можете створювати адаптивні варіанти своїх компонентів. Візьмемо, наприклад, наше адаптивне вирівнювання спадних меню, де ми змішуємо @eachцикл для $grid-breakpointsкарти Sass із медіа-запитом.

// We deliberately hardcode the `bs-` prefix because we check
// this custom property in JS to determine Popper's positioning

@each $breakpoint in map-keys($grid-breakpoints) {
  @include media-breakpoint-up($breakpoint) {
    $infix: breakpoint-infix($breakpoint, $grid-breakpoints);

    .dropdown-menu#{$infix}-start {
      --bs-position: start;

      &[data-bs-popper] {
        right: auto;
        left: 0;
      }
    }

    .dropdown-menu#{$infix}-end {
      --bs-position: end;

      &[data-bs-popper] {
        right: 0;
        left: auto;
      }
    }
  }
}

Якщо ви зміните свій $grid-breakpoints, ваші зміни будуть застосовані до всіх циклів, що виконуються по цій карті.

$grid-breakpoints: (
  xs: 0,
  sm: 576px,
  md: 768px,
  lg: 992px,
  xl: 1200px,
  xxl: 1400px
);

Для отримання додаткової інформації та прикладів того, як змінити наші карти та змінні Sass, зверніться до розділу Sass документації Grid .

Створення власного

Ми рекомендуємо вам прийняти ці вказівки під час створення за допомогою Bootstrap для створення власних компонентів. Ми розширили цей підхід до власних компонентів у нашій документації та прикладах. Такі компоненти, як наші виноски, побудовані так само, як наші надані компоненти з базовими класами та класами-модифікаторами.

Це виноска. Ми створили його спеціально для наших документів, щоб наші повідомлення вам виділялися. Він має три варіанти через класи-модифікатори.
<div class="callout">...</div>

In your CSS, you’d have something like the following where the bulk of the styling is done via .callout. Then, the unique styles between each variant is controlled via modifier class.

// Base class
.callout {}

// Modifier classes
.callout-info {}
.callout-warning {}
.callout-danger {}

For the callouts, that unique styling is just a border-left-color. When you combine that base class with one of those modifier classes, you get your complete component family:

This is an info callout. Example text to show it in action.
This is a warning callout. Example text to show it in action.
This is a danger callout. Example text to show it in action.