Ant Design (AntD) предоставляет богатый набор компонентов, которые можно кастомизировать с помощью CSS-переменных (CSS Variables). Использование переменных позволяет централизованно управлять темами, стилями и визуальной консистентностью приложений на React.
Ant Design изначально использует Less-переменные для настройки темы, но начиная с версии 5, библиотека поддерживает CSS Variables для динамического изменения стилей без перекомпиляции. Основной способ подключения:
import 'antd/dist/reset.css';
После этого стандартные CSS-переменные AntD становятся доступными для использования в стилях:
:root {
--antd-primary-color: #1890ff;
--antd-success-color: #52c41a;
--antd-error-color: #ff4d4f;
}
AntD предоставляет множество переменных для настройки визуальных аспектов компонентов. Наиболее часто используемые:
--antd-primary-color — основной цвет приложения.--antd-link-color — цвет ссылок.--antd-success-color — цвет состояния успеха.--antd-warning-color — цвет состояния
предупреждения.--antd-error-color — цвет состояния ошибки.--antd-font-size-base — базовый размер шрифта.--antd-border-radius-base — базовый радиус скругления
элементов.Эти переменные можно переопределять в корневом селекторе
:root или на уровне отдельного контейнера:
.theme-dark {
--antd-primary-color: #722ed1;
--antd-font-size-base: 16px;
}
Одним из главных преимуществ CSS-переменных является возможность менять тему на лету, без перезагрузки приложения. Например, реализация переключателя светлой и темной темы:
const toggleTheme = () => {
const root = document.documentElement;
if (root.dataset.theme === 'dark') {
root.dataset.theme = 'light';
root.style.setProperty('--antd-primary-color', '#1890ff');
} else {
root.dataset.theme = 'dark';
root.style.setProperty('--antd-primary-color', '#722ed1');
}
};
В CSS можно использовать такой подход:
:root[data-theme='dark'] {
--antd-primary-color: #722ed1;
--antd-background-color: #1f1f1f;
--antd-text-color: #fff;
}
Для локального изменения стилей отдельных компонентов можно использовать inline styles с CSS Variables:
<Button
style={{
'--antd-primary-color': '#ff4d4f',
'--antd-font-size-base': '18px',
}}
>
Danger Button
</Button>
Такой метод позволяет создавать уникальные визуальные блоки, не влияя на глобальную тему.
Любые кастомные стили могут ссылаться на переменные AntD. Например:
.custom-card {
background-color: var(--antd-background-color, #fff);
border-radius: var(--antd-border-radius-base, 4px);
color: var(--antd-text-color, #000);
}
Использование var(--variable, fallback) обеспечивает
корректное отображение даже при отсутствии переопределения.
CSS-переменные хорошо сочетаются с CSS-in-JS библиотеками:
import styled from 'styled-components';
const CustomButton = styled(Button)`
background-color: var(--antd-primary-color);
font-size: var(--antd-font-size-base);
border-radius: var(--antd-border-radius-base);
`;
Это позволяет сохранять мощь CSS Variables и одновременно использовать все возможности JS-стилей.
theme-light.css, theme-dark.css.:root или body).Можно создавать собственные переменные и использовать их совместно с AntD:
:root {
--custom-card-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
}
.custom-card {
box-shadow: var(--custom-card-shadow);
}
Это обеспечивает единообразие и упрощает последующую поддержку приложения.
Использование CSS Variables в Ant Design открывает возможности для динамических тем, локальных кастомизаций компонентов и универсальных стилей, позволяя создавать современный, гибко настраиваемый UI.