Bootstrap 5: Продвинутый уровень
2026-02-26 19:57 Diff

При разработке нового сайта может не хватить стандартных компонентов. В этом случае можно пойти двумя путями:

  • Переработать дизайн и подстроиться под готовые компоненты фреймворка
  • Создать новые компоненты под свои нужды

Благодаря функциям, переменным и миксинам в Bootstrap создать новый компонент будет не сложно. Главное — понимать принципы работы Bootstrap и использовать все возможности.

В этом уроке мы создадим компонент цитаты. Он впишется в любой блог или новостное издание, когда нужно подчеркнуть мысль внутри статьи.

Внешний вид компонента и его финальную верстку можно увидеть в CodePen.

Процесс создания компонента разделим на несколько этапов:

  1. Определение структуры компонентов
  2. Верстка базовой структуры
  3. Верстка классов-оформления для придания компоненту различных цветовых схем

Структура компонента

Перед созданием стилей нужно определить, какие элементы будут использоваться в компоненте, и где будут нужны модификаторы. Структурно можно разбить компонент на следующие составляющие:

  • Главная обертка. Компонент называется citation. Класс будет выбран соответствующий. Блоки цитат должны иметь различные варианты оформления в виде изменения фона и цвета текста. В качестве цветов будут использованы значения из переменной $theme-colors
  • Обертка для текста. Это блок с телом цитаты. Хоть данная обертка может не всегда быть нужна, как в случае с одной строкой текста, но при сложных цитатах желательно иметь свою обертку. В качестве класса можно выбрать класс .citation-body
  • Обертка для автора цитаты. Помимо имени автора она создает границу сверху для разделения частей компонента. Данная область может иметь и ссылки на цитаты, поэтому блок можно назвать .citation-footer без привязки к автору

Верстка базовой структуры

Создадим одну базовую разметку для компонента:

Сейчас выбрана семантичная верстка для цитат, но компонент должен работать при любой структуре. Это значит, что в стилях не должно быть привязки к тегам.

Второй этап создания компонента — создание файловой структуры. В Bootstrap каждый компонент располагается в отдельном файле. Также необходимо создать отдельный файл, где будет подключение Bootstrap и самого компонента. Таким файлом будет main.scss.

Общий вид файловой структуры:

В файле main.scss_ подключим Bootstrap и компонент Citation:

Теперь можно перейти к верстке блока цитат. В Bootstrap существуют свои стили для цитат и для этого есть четыре переменные в файле _variables.scss. Их можно использовать во время разработки компонента. Это поможет сохранить преемственность нашего компонента и стандартных стилей цитат.

Для создания отступов воспользуемся массивом $spacers, который имеет следующую структуру:

Все эти значения помогут создать структуру блока .citation:

В этом примере основные свойства, такие как отступы, цвет, размеры вынесены в CSS-переменные. Этот подход появился в последних версиях Bootstrap и используется для создания тем. Главным триггером появления такого подхода стала возможность использования светлой и темной темы.

Создание кавычек в компоненте

Для создания кавычек воспользуемся псевдоэлементом ::before, который создаст новый элемент сразу после открытия тега с классом citation. Внутри псевдоэлемента используем абсолютно позиционированный элемент со шрифтом «Times New Roman». Для этого создадим переменную $font-family-serif в файле main.scss:

Теперь все готово для создания псевдоэлемента:

Создание футера компонента

Основная верстка контейнера для цитат готова. Теперь можно перейти к созданию стилей для .citation-footer. Можно обратить внимание, что пропущены стили для .citation-body. Это сделано по причине того, что все необходимые стили будут унаследованы от родительского блока .citation. В будущем эту обертку можно использовать для указания классов-утилит Bootstrap или создания новых модификаторов.

Задача футера — указать наклонное начертание шрифта и установить границу сверху вместе со всеми отступами. Так как автор цитаты всегда указывается шрифтом меньшим, чем сама цитата, воспользуемся переменной $blockquote-footer-font-size:

Основная верстка компонента закончена. Если воспользоваться созданным компонентом, то получим следующий блок.

Создание классов-модификаторов цветового оформления

Последняя задача — создание классов-модификаторов, которые добавят фоновый цвет для цитат. Помимо этого эти классы должны переопределить цвет текста на белый для создания правильного контраста.

С массивом $theme-colors возможно пройтись по всем цветам и добавить свойство background-color. Массив $theme-colors имеет следующие значения:

Так как это ассоциативный массив, то для его перебора можно воспользоваться функцией @each:

Здесь мы меняем только заданные переменные для замены цвета фона и текста. Для «красоты» были использованы не просто цвета, а их специальные версии, где фон осветляется, а текст становится темнее. Такой же подход используется в компоненте Alert.

В результате компиляции появятся следующие стили:

Так как все цвета берутся из массива, то смена цветовой темы всего проекта приведет и к смене цветов этого компонента.

Разработка компонента закончена. Его всегда можно доработать, создав дополнительные классы-модификаторы или дополнительно адаптировав под различные разрешения экрана. Принцип создания этих дополнений не будет отличаться от того, что было рассмотрено в этом уроке.

Выводы

В этом уроке мы изучили, как создаются пользовательские компоненты с помощью Bootstrap. Чтобы связать новый компонент с «внутренностями» фреймворка следует использовать:

  • Переменные Bootstrap, которые находятся в файле _variables.scss
  • Функции и миксины фреймворка
  • CSS-переменные

При таком подходе смена настроек фреймворка или его обновление затронет и ваши созданные компоненты. Это поможет держать систему в однообразии.