HTML Diff
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, но чаще всего его ставят на весь &lt;body&gt;. Это позволяет задать тему сразу для всего проекта.</p>
7 </ul><p>Использовать атрибут можно на любом теге HTML, но чаще всего его ставят на весь &lt;body&gt;. Это позволяет задать тему сразу для всего проекта.</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. Этот атрибут может использоваться как на отдельном компоненте, так и на всем проекте. Для всего проекта атрибут устанавливают для тега &lt;html&gt; или &lt;body&gt;. Чтобы установить темную тему, используется значение dark.</p>
31 <p>Переключение тем происходит с помощью изменения атрибута data-bs-theme. Этот атрибут может использоваться как на отдельном компоненте, так и на всем проекте. Для всего проекта атрибут устанавливают для тега &lt;html&gt; или &lt;body&gt;. Чтобы установить темную тему, используется значение 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>