Настройка цвета в MkDocs-Material
Это короткая заметка об использовании цвета. Более полная информация находится тут.
Вы можете настроить цвет элементов сайта несколькими способами, внеся соответствующие изменения в mkdocs.yml или некоторые другие файлы:
- указав предустановленную цветовую схему;
- указав primary или accent цвет из числа предложенных;
- настроить переключение цветовой схемы;
- указать свои собственные цвета для элементов сайта.
Далее немного более подробно об этих возможностях.
Указание предустановленной цветовой схемы
MkDocs-Material предлагает две цветовые схемы: default (светлая) и slate (темная). Просто добавьте в mkdocs.yml:
Аналогично можно установить темную цветовую схему.
Указание primary или accent цветов
Элементы primary - это заголовок, боковая панель, текстовые ссылки и некоторые другие. Элементы accent - это те, с которыми можно взаимодействовать, например, ссылки, кнопки или полосы прокрутки.
Чтобы задать цвета элементов primary или accent, добавьте:
Доступные цвета для primary: red, pink, purple, deep purple, indigo, blue, light blue, cyan, teal, green, light green, lime, yellow, amber, orange, deep orange, brown, grey, blue grey, black, white.
Цвета для accent доступны из того же набора, но он только до deep orange.
Настройка переключения цветовой схемы
Можно предоставить пользователю возможность переключать схему. Для этого добавьте:
theme:
palette:
# Palette toggle for light mode
- scheme: default
toggle:
icon: material/brightness-7
name: Switch to dark mode
# Palette toggle for dark mode
- scheme: slate
toggle:
icon: material/brightness-4
name: Switch to light mode
Кнопка переключения будет доступна в верхней части страницы. При этом внешний вид кнопки можно также настроить, заменив значение icon на одну из следующих пар:
material/brightness-7иmaterial/brightness-4material/toggle-switchиmaterial/toggle-switch-off-outlinematerial/weather-nightиmaterial/weather-sunnymaterial/eyeиmaterial/eye-outlinematerial/lightbulbиmaterial/lightbulb-outline
Можно активировать автоматическое переключение схемы в зависимости от цветовой схемы в системе пользователя. Для этого просто добавьте свойство media:
theme:
palette:
# Palette toggle for light mode
- media: "(prefers-color-scheme: light)"
scheme: default
toggle:
icon: material/brightness-7
name: Switch to dark mode
# Palette toggle for dark mode
- media: "(prefers-color-scheme: dark)"
scheme: slate
toggle:
icon: material/brightness-4
name: Switch to light mode
Некоторые современные системы позволяют также автоматически выбирать цветовую схему в зависимости от времени суток пользователя. Для такой настройки добавьте:
theme:
palette:
# Palette toggle for automatic mode
- media: "(prefers-color-scheme)"
toggle:
icon: material/brightness-auto
name: Switch to light mode
# Palette toggle for light mode
- media: "(prefers-color-scheme: light)"
scheme: default
toggle:
icon: material/brightness-7
name: Switch to dark mode
# Palette toggle for dark mode
- media: "(prefers-color-scheme: dark)"
scheme: slate
toggle:
icon: material/brightness-4
name: Switch to system preference
Указание собственных цветов
Выше было видно, что цвета элементов можно настроить путем выбора значений из определенного набора, но есть возможность указывать свои собственные цвета (но для тех же primary и accent элементов). Для этого создайте дополнительный файл docs/stylesheets/extra.css и добавьте в него:
:root > * {
--md-primary-fg-color: #EE0F0F;
--md-primary-fg-color--light: #ECB7B7;
--md-primary-fg-color--dark: #90030C;
}
После этого, в mkdocs.yml добавьте:
В результате изменятся цвета primary элементов для светлой и темной тем.
Наборы собственных цветовых решений можно именовать, получив тем самым свои собственные схемы, например:
[data-md-color-scheme="youtube"] {
--md-primary-fg-color: #EE0F0F;
--md-primary-fg-color--light: #ECB7B7;
--md-primary-fg-color--dark: #90030C;
}
Для активации именованной схемы[data-md-color-scheme="slate"] {
--md-hue: 210;
} добавьте в mkdocs.yml:
Кроме этого, можно настраивать цветовые наборы с использованием функции hsla, которая позволяет указывать еще и насыщенность: