Naive UI предоставляет мощный механизм управления темами, позволяющий легко изменять визуальное оформление компонентов без необходимости глубоко модифицировать стили. Встроенные темы обеспечивают готовые наборы цветов, отступов и шрифтов, которые можно применять глобально или локально для отдельных компонентов.
Встроенные темы делятся на две ключевые категории:
light) – стандартная
цветовая схема с преобладанием светлых тонов, обеспечивающая высокую
читаемость и минимальную нагрузку на глаза при дневном освещении.dark) – адаптированная
для низкой освещенности схема, где базовые цвета заменены на более
темные оттенки, снижая блики и контрастность.Каждая тема включает набор переменных, которые управляют:
Для применения встроенной темы используется провайдер
NConfigProvider, который оборачивает корневой компонент
приложения:
import { createApp } fr om 'vue';
import { NConfigProvider, darkTheme } from 'naive-ui';
import App from './App.vue';
const app = createApp(App);
app.use(NConfigProvider, {
theme: darkTheme
});
app.mount('#app');
В примере выше применяется темная тема через объект
darkTheme. Для светлой темы можно использовать
undefined или объект lightTheme, что является
значением по умолчанию.
Naive UI позволяет переопределять отдельные переменные
темы, создавая собственные вариации встроенных схем. Для этого
можно использовать функцию createTheme:
import { createTheme, NConfigProvider } from 'naive-ui';
const customTheme = createTheme({
common: {
primaryColor: '#4caf50',
primaryColorHover: '#45a049',
textColor1: '#333333'
},
Button: {
borderRadius: '12px',
fontSize: '16px'
}
});
app.use(NConfigProvider, {
theme: customTheme
});
Особенности кастомизации:
common содержит глобальные переменные темы,
влияющие на все компоненты.Button, Input, Card), который
позволяет изменять только конкретные свойства.Naive UI поддерживает динамическое изменение темы во время
работы приложения. Для этого используется реактивная
переменная, передаваемая в NConfigProvider через
theme:
import { ref } from 'vue';
import { NConfigProvider, darkTheme, lightTheme } from 'naive-ui';
const isDark = ref(false);
<NConfigProvider :theme="isDark ? darkTheme : lightTheme">
<App />
</NConfigProvider>
Для плавного переключения можно также переопределять переменные темы в реальном времени, создавая эффекты, соответствующие пользовательским предпочтениям.
Встроенные темы содержат следующие ключевые переменные:
primaryColor – основной цвет для
кнопок, ссылок и активных элементов.infoColor, successColor,
warningColor, errorColor –
стандартные семантические цвета для уведомлений и статусов.textColor1, textColor2 –
базовые цвета текста, для заголовков и вспомогательной информации.borderRadius – радиус скругления
компонентов.fontSize – базовый размер шрифта.Эти переменные можно изменять локально для компонентов или глобально
через NConfigProvider.
Naive UI позволяет интегрировать встроенные темы с
CSS-переменными и сторонними стилями. Для этого можно
использовать объект themeOverrides, который передается в
NConfigProvider:
<NConfigProvider :theme="darkTheme" :theme-overrides="{
Button: { color: '#ff5722' },
Input: { borderRadius: '8px' }
}">
<App />
</NConfigProvider>
Такой подход позволяет:
Встроенные темы Naive UI позволяют строить интерфейсы, которые легко адаптируются под разные сценарии использования, при этом сохраняя чистую структуру кода и совместимость с реактивными возможностями Vue.