0 added
0 removed
Original
2026-01-01
Modified
2026-02-26
1
<p>В версии Bootstrap 5.3 появилась новая функция - возможность создавать светлую и темную темы для проекта. Теперь не нужно писать кастомные CSS-стили для создания нескольких тем. Всё настраивается через переменные.</p>
1
<p>В версии Bootstrap 5.3 появилась новая функция - возможность создавать светлую и темную темы для проекта. Теперь не нужно писать кастомные CSS-стили для создания нескольких тем. Всё настраивается через переменные.</p>
2
<p>В этом уроке мы разберем, как работает светлая и темная темы в Bootstrap. Так же изучим изменение темы и создание собственных.</p>
2
<p>В этом уроке мы разберем, как работает светлая и темная темы в Bootstrap. Так же изучим изменение темы и создание собственных.</p>
3
<h2>Переключение светлой и темной тем</h2>
3
<h2>Переключение светлой и темной тем</h2>
4
<p>В Bootstrap 5.3 светлая и темная темы включены по умолчанию. Для них всё готово. Нужно лишь научится их переключать. Это можно сделать с помощью HTML-атрибута data-bs-theme, который принимает одно из двух значений:</p>
4
<p>В Bootstrap 5.3 светлая и темная темы включены по умолчанию. Для них всё готово. Нужно лишь научится их переключать. Это можно сделать с помощью HTML-атрибута data-bs-theme, который принимает одно из двух значений:</p>
5
<ul><li>light - светлая тема. Используется по умолчанию</li>
5
<ul><li>light - светлая тема. Используется по умолчанию</li>
6
<li>dark - темная тема</li>
6
<li>dark - темная тема</li>
7
</ul><p>Использовать атрибут можно на любом теге HTML, но чаще всего его ставят на весь <body>. Это позволяет задать тему сразу для всего проекта.</p>
7
</ul><p>Использовать атрибут можно на любом теге HTML, но чаще всего его ставят на весь <body>. Это позволяет задать тему сразу для всего проекта.</p>
8
<p>В<a>примере</a>можно включать и выключать темную тему, чтобы посмотреть на все изменения.</p>
8
<p>В<a>примере</a>можно включать и выключать темную тему, чтобы посмотреть на все изменения.</p>
9
<p>Если посмотреть на изменения, можно заметить важную особенность - изменяется фон и цвет текста. Основные цвета, такие как primary и warning не изменяются, так как это основные цвета темы.</p>
9
<p>Если посмотреть на изменения, можно заметить важную особенность - изменяется фон и цвет текста. Основные цвета, такие как primary и warning не изменяются, так как это основные цвета темы.</p>
10
<p>Также не изменяются размеры элементов, их расположение, внутренние и внешние отступы. Всё это не относится к изменениям темы, но можно влиять даже на это с помощью миксина color-mode.</p>
10
<p>Также не изменяются размеры элементов, их расположение, внутренние и внешние отступы. Всё это не относится к изменениям темы, но можно влиять даже на это с помощью миксина color-mode.</p>
11
<p>Иногда возникает необходимость изменить не только фон и цвет текста, но и все основные цвета. Это может происходить по разным причинам, например, текущие цвета слишком яркие или тусклые для темной темы. Переопределим цвета для темной темы сайта.</p>
11
<p>Иногда возникает необходимость изменить не только фон и цвет текста, но и все основные цвета. Это может происходить по разным причинам, например, текущие цвета слишком яркие или тусклые для темной темы. Переопределим цвета для темной темы сайта.</p>
12
<h2>Изменение темной темы</h2>
12
<h2>Изменение темной темы</h2>
13
<p>В уроке про изменение цветовой схемы мы создали новую пастельную схему. Вот как она выглядела:</p>
13
<p>В уроке про изменение цветовой схемы мы создали новую пастельную схему. Вот как она выглядела:</p>
14
<p>Ее цвета не такие "агрессивные" для использования на темном фоне. Поэтому сделаем смену основных цветов только для темной темы. Для этого продолжим изменять файл<em>brand-color.scss</em>, который был создан в уроке про цветовые схемы. Вот как он выглядел:</p>
14
<p>Ее цвета не такие "агрессивные" для использования на темном фоне. Поэтому сделаем смену основных цветов только для темной темы. Для этого продолжим изменять файл<em>brand-color.scss</em>, который был создан в уроке про цветовые схемы. Вот как он выглядел:</p>
15
<p>Чтобы переделать цвета только для темной темы, нужно будет пойти на небольшие хитрости:</p>
15
<p>Чтобы переделать цвета только для темной темы, нужно будет пойти на небольшие хитрости:</p>
16
<ol><li>Создать новые массивы $theme-colors и $theme-colors-rgb</li>
16
<ol><li>Создать новые массивы $theme-colors и $theme-colors-rgb</li>
17
<li>Сгенерировать новые переменные цветовой схемы</li>
17
<li>Сгенерировать новые переменные цветовой схемы</li>
18
<li>Обернуть все переменные и функции в миксин color-mode с аргументом dark</li>
18
<li>Обернуть все переменные и функции в миксин color-mode с аргументом dark</li>
19
<li>Изменить порядок подключения файлов в файле<em>main.scss</em></li>
19
<li>Изменить порядок подключения файлов в файле<em>main.scss</em></li>
20
</ol><p>Пойдем по порядку. Создадим массивы $theme-colors и $theme-colors-rgb. Это создаст новую цветовую схему, которую в последствии будем использовать только для элементов с атрибутом data-bs-theme="dark":</p>
20
</ol><p>Пойдем по порядку. Создадим массивы $theme-colors и $theme-colors-rgb. Это создаст новую цветовую схему, которую в последствии будем использовать только для элементов с атрибутом data-bs-theme="dark":</p>
21
<p>Важно, что мы создаем массив $theme-colors-rgb, где все цвета переводятся в модель rgb. В таком формате используются цвета в некоторых компонентах. Например, в формате RGB используются цвета в тексте:</p>
21
<p>Важно, что мы создаем массив $theme-colors-rgb, где все цвета переводятся в модель rgb. В таком формате используются цвета в некоторых компонентах. Например, в формате RGB используются цвета в тексте:</p>
22
<p>Теперь используем новые массивы и сгенерируем цвета. Для этого используем два цикла, которые сгенерируют переменные:</p>
22
<p>Теперь используем новые массивы и сгенерируем цвета. Для этого используем два цикла, которые сгенерируют переменные:</p>
23
<p>Этот код сгенерирует 12 переменных:</p>
23
<p>Этот код сгенерирует 12 переменных:</p>
24
<p>Чтобы эти переменные использовались только на темной теме, весь написанный код нужно обернуть в миксин color-mode со значением dark. Это добавит переменные в CSS-селектор [data-bs-theme=dark]:</p>
24
<p>Чтобы эти переменные использовались только на темной теме, весь написанный код нужно обернуть в миксин color-mode со значением dark. Это добавит переменные в CSS-селектор [data-bs-theme=dark]:</p>
25
<p>Осталось подключить файл с цветовой схемой. Тут есть хитрость - подключить файл уже после подключения фреймворка. В Bootstrap еще не отточена система с изменением темной цветовой схемы, так как нет отдельного массива $theme-colors в настройках проекта.</p>
25
<p>Осталось подключить файл с цветовой схемой. Тут есть хитрость - подключить файл уже после подключения фреймворка. В Bootstrap еще не отточена система с изменением темной цветовой схемы, так как нет отдельного массива $theme-colors в настройках проекта.</p>
26
<p>По этой причине вначале полностью подключается Bootstrap, а затем отдельно подключается новая темная цветовая схема.</p>
26
<p>По этой причине вначале полностью подключается Bootstrap, а затем отдельно подключается новая темная цветовая схема.</p>
27
<p>После компиляции в CSS-файле появится следующий код:</p>
27
<p>После компиляции в CSS-файле появится следующий код:</p>
28
<p>Добавим этот CSS в наш первый пример. Теперь при переключении темы меняются и основные цвета<a>проекта</a>.</p>
28
<p>Добавим этот CSS в наш первый пример. Теперь при переключении темы меняются и основные цвета<a>проекта</a>.</p>
29
<h2>Выводы</h2>
29
<h2>Выводы</h2>
30
<p>В Bootstrap 5.3 появилась возможность использовать несколько цветовых схем. Главным мотиватором такого решения стала возможность добавлять светлую и темную тему для проекта.</p>
30
<p>В Bootstrap 5.3 появилась возможность использовать несколько цветовых схем. Главным мотиватором такого решения стала возможность добавлять светлую и темную тему для проекта.</p>
31
<p>Переключение тем происходит с помощью изменения атрибута data-bs-theme. Этот атрибут может использоваться как на отдельном компоненте, так и на всем проекте. Для всего проекта атрибут устанавливают для тега <html> или <body>. Чтобы установить темную тему, используется значение dark.</p>
31
<p>Переключение тем происходит с помощью изменения атрибута data-bs-theme. Этот атрибут может использоваться как на отдельном компоненте, так и на всем проекте. Для всего проекта атрибут устанавливают для тега <html> или <body>. Чтобы установить темную тему, используется значение dark.</p>
32
<p>Чтобы добавить произвольные цвета в цветовую схему для темной темы, используется следующий алгоритм:</p>
32
<p>Чтобы добавить произвольные цвета в цветовую схему для темной темы, используется следующий алгоритм:</p>
33
<ol><li>Создаются новые массивы $theme-colors и $theme-colors-rgb</li>
33
<ol><li>Создаются новые массивы $theme-colors и $theme-colors-rgb</li>
34
<li>С помощью циклов генерируются CSS-переменные из созданных массивов</li>
34
<li>С помощью циклов генерируются CSS-переменные из созданных массивов</li>
35
<li>Весь код оборачивается в миксин color-mode с аргументом dark. Это позволит сгенерировать переменные только для селектора [data-bs-theme=dark]</li>
35
<li>Весь код оборачивается в миксин color-mode с аргументом dark. Это позволит сгенерировать переменные только для селектора [data-bs-theme=dark]</li>
36
<li>В основном файле проекта новые цвета подключаются уже после подключения всего фреймворка</li>
36
<li>В основном файле проекта новые цвета подключаются уже после подключения всего фреймворка</li>
37
</ol>
37
</ol>