Ant Design предоставляет гибкую систему управления темами, которая позволяет изменять цвета компонентов без необходимости переписывать стили вручную. В основе лежит использование LESS-переменных, которые определяют основные цветовые параметры интерфейса.
Каждый компонент Ant Design использует набор переменных, которые можно переопределять. Основные переменные, влияющие на палитру:
@primary-color — основной цвет приложения.@link-color — цвет ссылок.@success-color, @warning-color,
@error-color — цвета для различных состояний.@font-size-base — базовый размер шрифта (влияет на
визуальное восприятие цветов).@border-radius-base — радиус скругления элементов
(визуально влияет на яркость компонентов).Для изменения палитры необходимо создать файл theme.less
и переопределить нужные переменные:
@primary-color: #1DA57A; // новый основной цвет
@link-color: #1890ff; // цвет ссылок
@success-color: #52c41a;
@warning-color: #faad14;
@error-color: #f5222d;
Затем подключить этот файл через конфигурацию сборщика (например,
Webpack) с использованием less-loader:
// webpack.config.js
module.exports = {
module: {
rules: [
{
test: /\.less$/,
use: [
'style-loader',
'css-loader',
{
loader: 'less-loader',
options: {
lessOptions: {
modifyVars: {
'primary-color': '#1DA57A',
'link-color': '#1890ff',
'success-color': '#52c41a',
'warning-color': '#faad14',
'error-color': '#f5222d',
},
javascriptEnabled: true,
},
},
},
],
},
],
},
};
Ant Design поддерживает динамическое изменение цвета без
перезагрузки страницы через библиотеку
@ant-design/colors и функцию генерации новых палитр.
npm install @ant-design/colors
import { generate } from '@ant-design/colors';
const newPrimary = '#722ed1';
const palette = generate(newPrimary); // возвращает массив оттенков
console.log(palette);
const root = document.documentElement;
palette.forEach((color, index) => {
root.style.setProperty(`--primary-${index + 1}`, color);
});
После этого компоненты, использующие CSS-переменные, автоматически обновят свой цвет.
Компонент ConfigProvider позволяет централизованно
управлять темой и локализацией. Для изменения палитры достаточно
передать объект theme:
import { ConfigProvider, Button } from 'antd';
const App = () => (
<ConfigProvider
theme={{
token: {
colorPrimary: '#13c2c2',
colorSuccess: '#52c41a',
colorWarning: '#faad14',
colorError: '#f5222d',
},
}}
>
<Button type="primary">Нажми меня</Button>
</ConfigProvider>
);
Ключевые моменты:
token.colorPrimary — основной цвет.token.colorSuccess, token.colorWarning,
token.colorError — цвета для состояний.ConfigProvider применяются
моментально ко всем вложенным компонентам.Ant Design поддерживает светлую и темную темы из коробки. Для
перехода между ними используется свойство algorithm:
import { theme } from 'antd';
const { defaultAlgorithm, darkAlgorithm } = theme;
<ConfigProvider theme={{ algorithm: darkAlgorithm }}>
<App />
</ConfigProvider>
Можно комбинировать с пользовательскими цветами, чтобы создать уникальную темную тему:
<ConfigProvider
theme={{
algorithm: darkAlgorithm,
token: {
colorPrimary: '#ff4d4f',
},
}}
>
<App />
</ConfigProvider>
@ant-design/colors — создание оттенков основного
цвета.darken и lighten для ручной
корректировки оттенков.Каждый компонент Ant Design использует токены из темы. Примеры:
<Button type="primary">Primary</Button>
Цвет кнопки берется из colorPrimary.
<Badge status="error" text="Ошибка" />
Цвет статуса соответствует colorError.
<Input placeholder="Введите текст" />
Границы и фокус используют colorPrimary.
Эта система позволяет быстро изменять визуальный стиль всего приложения через централизованное управление палитрой.