Цвет — важная особенность дизайна и всего Bootstrap. Если открыть любой дизайн-документ крупной компании, то можно увидеть, что цвету и его использованию уделяется много внимания.
Хороший дизайн легко «убить» плохим цветом. Также с помощью цвета можно запутать пользователя. Например, если кнопка «Принять» станет красной, а «Отменить» — зеленой:
See the Pen bootstrap_basic_course_components_quote_final by Hexlet (@hexlet) on CodePen.
Это все относится к дизайну и пользовательскому поведению. И чтобы не испортить интерфейс, важно уметь правильно работать с цветом внутри экосистемы Bootstrap.
В этом уроке мы разберем, как формируется основная тема Bootstrap и как реализовать темную и светлую тему.
Устройство цветовой схемы Bootstrap
В Bootstrap есть восемь основных цветов:
-
Primary
-
Secondary
-
Success
-
Danger
-
Warning
-
Info
-
Light
-
Dark
See the Pen bootstrap_advanced_course_colors_1 by Hexlet (@hexlet) on CodePen.
В этих названиях нет привязки к конкретным цветам. Здесь переданы семантические — смысловые названия. Такой подход пришел из мира дизайна, где привычно использовать основной, второстепенный и другие цвета, а не просто синий, желтый, серый.
Это позволяет менять цветовую схему и не боятся нарушения логики в названиях. Если синий цвет primary
поменяется на оранжевый, то он не перестанет быть «основным цветом».
Рассмотрим, как цветовая схема указывается внутри Bootstrap. Все цвета записываются через переменные и хранятся в файле _variables.scss:
$primary: $blue !default;
$secondary: $gray-600 !default;
$success: $green !default;
$info: $cyan !default;
$warning: $yellow !default;
$danger: $red !default;
$light: $gray-100 !default;
$dark: $gray-900 !default;
$theme-colors: (
"primary": $primary,
"secondary": $secondary,
"success": $success,
"info": $info,
"warning": $warning,
"danger": $danger,
"light": $light,
"dark": $dark
) !default;
На этом примере видно, что цвета формируются из уже готовых переменных, которые потом попадают в массив $theme-colors
. Проследим, как появился цвет Secondary
:
$gray-100: #f8f9fa !default;
$gray-200: #e9ecef !default;
$gray-300: #dee2e6 !default;
$gray-400: #ced4da !default;
$gray-500: #adb5bd !default;
$gray-600: #6c757d !default;
$gray-700: #495057 !default;
$gray-800: #343a40 !default;
$gray-900: #212529 !default;
$secondary: $gray-600 !default;
$theme-colors: (
"secondary": $secondary,
) !default;
Основной путь цвета от его первого появления до появления в теме выглядит так:
-
Определение цвета.
$gray-600: #6c757d;
-
Указание цвета в смысловой переменной.
$secondary: $gray-600;
-
Добавление цвета в массив
$theme-colors
Второй и третий пункты — самые важные. Bootstrap не ограничивает, как именно появится цвет в переменной $secondary
. Это может происходить по-разному.
Например, для серого цвета все определено «в лоб», то есть напрямую указаны цвета в формате HEX без использования различных функций или миксинов. Некоторые цвета генерируются автоматически, например, так выглядит синий цвет и его вариации от темного к светлому:
$blue: #0d6efd !default;
$blue-100: tint-color($blue, 80%) !default;
$blue-200: tint-color($blue, 60%) !default;
$blue-300: tint-color($blue, 40%) !default;
$blue-400: tint-color($blue, 20%) !default;
$blue-500: $blue !default;
$blue-600: shade-color($blue, 20%) !default;
$blue-700: shade-color($blue, 40%) !default;
$blue-800: shade-color($blue, 60%) !default;
$blue-900: shade-color($blue, 80%) !default;
Для осветленных значений (от blue-100
до blue-400
) используется функция tint-color()
, которая смешивает передаваемый цвет и белый. Для затемненных значений используется функция shade-color()
, которая смешивает передаваемый цвет с черным. Это встроенные в Bootstrap функции. Их можно использовать для создания своих цветовых схем.
Попробуйте открыть файл _variables.scss и проследить, как появились остальные цвета в массиве $theme-colors
. Теперь можно создать свою тему для Bootstrap. Для этого нам нужно будет изменить уже готовые цвета в Bootstrap.
Создание своей цветовой схемы
Создадим новую цветовую схему с помощью пастельных цветов.
В этом уроке не будем останавливаться на том, как правильно выбирать цвета. Но можно использовать сервисы с палитрами цветов. Например, Color Hunt.
Воспользуемся такой палитрой цветов:
В этом примере у нас уже есть конкретные вариации цветов, поэтому не будем использовать генерацию с помощью различных SASS-функций.
Создадим новый массив с цветовой схемой и заменим переменные $primary
, $secondary
и так далее. В этом случае не затрагиваются старые цветовые схемы и можно быстро откатиться в случае необходимости.
Все изменения внесем в кастомный SASS-файл, чтобы не изменять оригинальный файл Bootstrap:
@use "sass:map";
$brand-theme-colors: (
"primary": #a8d8ea,
"secondary": #aa96da,
"success": #bbfcba,
"danger": #fcbad3,
"warning": #ffffd2,
"info": #96a9da,
);
$primary: map.get($brand-theme-colors, "primary");
$secondary: map.get($brand-theme-colors, "secondary");
$success: map.get($brand-theme-colors, "success");
$info: map.get($brand-theme-colors, "info");
$warning: map.get($brand-theme-colors, "warning");
$danger: map.get($brand-theme-colors, "danger");
Подключим файл с цветами и сам фреймворк к нашему проекту:
@import "./brand-color";
@import "../../node_modules/bootstrap/scss/bootstrap.scss";
После компиляции цветовая схема сменится.
Так выглядит предыдущий пример с новыми цветами:
See the Pen bootstrap_advanced_course_colors_3 by Hexlet (@hexlet) on CodePen.
Изменение основных цветов также переопределило цвет надписей на блоках. Это высчитывается автоматически внутри Bootstrap, и менять самостоятельно это не стоит.
Выводы
В этом уроке мы изучили, из чего состоит цветовая схема Bootstrap. В ее основе лежит восемь цветов:
-
Primary
-
Secondary
-
Success
-
Danger
-
Warning
-
Info
-
Light
-
Dark
Эти цвета имеют семантическое название. Это позволяет не привязываться к конкретным цветам и не путаться при изменении цветовой схемы.
Чтобы изменить цветовую схему, достаточно поменять переменные цветов внутри Bootstrap:
-
$primary
-
$secondary
-
$success
-
$danger
-
$warning
-
$info
-
$light
-
$dark
После компиляции фреймворка цвета внутри всех компонентов автоматически заменятся.
Самостоятельная работа
Создайте новую цветовую схему выбрав любую палитру цветов из Color Hunt, либо выберите свои цвета. Добавьте файл с цветами и подключите его в проект. Создайте шаблон страницы, использующий цвета. Проверьте, что отображаются цвета из вашей палитры.
Дополнительные материалы
Остались вопросы? Задайте их в разделе «Обсуждение»
Вам ответят команда поддержки Хекслета или другие студенты
Для полного доступа к курсу нужен базовый план
Базовый план откроет полный доступ ко всем курсам, упражнениям и урокам Хекслета, проектам и пожизненный доступ к теории пройденных уроков. Подписку можно отменить в любой момент.