В библиотеке Naive UI объект
GlobalStyle отвечает за настройку глобальных стилей
интерфейса, обеспечивая единый визуальный язык для всех компонентов. Он
позволяет задавать типографику, отступы, цвета, размеры и другие
параметры, которые будут применяться по умолчанию ко всем элементам.
Для использования глобальных стилей создается объект через функцию
createGlobalStyle или непосредственно в объекте
configProvider:
import { createGlobalStyle, NConfigProvider } from 'naive-ui';
const globalStyle = createGlobalStyle({
body: {
fontFamily: 'Roboto, sans-serif',
fontSize: '16px',
lineHeight: '1.5',
color: '#333',
backgroundColor: '#f5f5f5'
},
a: {
color: '#42b983',
textDecoration: 'none'
},
h1: {
fontSize: '2rem',
fontWeight: '700'
}
});
export default globalStyle;
После создания глобальные стили подключаются к корню приложения через
NConfigProvider:
import { createApp } from 'vue';
import App from './App.vue';
import { NConfigProvider } from 'naive-ui';
import globalStyle from './globalStyle';
const app = createApp(App);
app.use(NConfigProvider, {
themeOverrides: {},
globalStyle
});
app.mount('#app');
Типографика
Можно задавать шрифты для всего приложения.
Поддерживаются CSS-свойства: fontFamily,
fontSize, fontWeight, lineHeight,
letterSpacing.
Пример:
const globalStyle = createGlobalStyle({
body: {
fontFamily: 'Arial, sans-serif',
fontSize: '14px',
lineHeight: '1.6'
}
});Цвета и фон
Общие цвета текста, ссылок и фона.
С помощью глобальных переменных можно поддерживать светлую и темную тему.
Пример:
body: {
color: '#212121',
backgroundColor: '#fafafa'
},
a: {
color: '#1e88e5'
}Сброс стилей (Reset)
Удобно для унификации внешнего вида разных браузеров.
Можно задать margin, padding и
box-sizing для всех элементов.
Пример:
'*': {
margin: 0,
padding: 0,
boxSizing: 'border-box'
}Темизация компонентов
GlobalStyle можно использовать для задания базовой темы
всех компонентов Naive UI.primaryColor,
successColor, warningColor, могут быть
глобально переопределены.GlobalStyle поддерживает динамическое обновление через реактивные данные Vue:
import { reactive, watch } from 'vue';
import { createGlobalStyle } from 'naive-ui';
const theme = reactive({
darkMode: false
});
const globalStyle = createGlobalStyle({
body: {
backgroundColor: theme.darkMode ? '#121212' : '#ffffff',
color: theme.darkMode ? '#e0e0e0' : '#212121'
}
});
watch(() => theme.darkMode, (newValue) => {
globalStyle.update(); // обновление стилей при смене темы
});
Можно связывать глобальные стили с CSS-переменными, чтобы компоненты автоматически наследовали значения:
const globalStyle = createGlobalStyle({
':root': {
'--primary-color': '#42b983',
'--font-size-base': '16px'
},
body: {
fontSize: 'var(--font-size-base)',
color: 'var(--primary-color)'
}
});
GlobalStyle легко комбинируется с препроцессорами для более сложной структуры переменных и миксинов, что позволяет поддерживать модульность и масштабируемость проекта.
globalStyle.js для удобного
управления.GlobalStyle в Naive UI — это мощный инструмент, который позволяет централизованно управлять визуальной идентичностью приложения, снижает количество повторяющегося кода и упрощает поддержку тем и стилей на уровне всего проекта.