Vuetify использует Material Design цветовую систему, которая позволяет создавать визуально гармоничные интерфейсы с согласованными оттенками. Цвета в Vuetify организованы в палитры с различными вариантами оттенков, что облегчает их применение в компонентах и стилях приложения.
Каждый основной цвет в Vuetify представлен набором оттенков:
Пример стандартной палитры primary:
primary: {
lighten5: '#E3F2FD',
lighten4: '#BBDEFB',
lighten3: '#90CAF9',
lighten2: '#64B5F6',
lighten1: '#42A5F5',
base: '#2196F3',
darken1: '#1E88E5',
darken2: '#1976D2',
darken3: '#1565C0',
darken4: '#0D47A1',
accent1: '#82B1FF',
accent2: '#448AFF',
accent3: '#2979FF',
accent4: '#2962FF'
}
Vuetify позволяет задавать светлую и тёмную тему, а также настраивать пользовательские цвета для всех компонентов.
Пример создания кастомной темы:
import { createVuetify } from 'vuetify'
import 'vuetify/styles'
const vuetify = createVuetify({
theme: {
defaultTheme: 'light',
themes: {
light: {
colors: {
primary: '#1976D2',
secondary: '#424242',
accent: '#82B1FF',
error: '#FF5252',
info: '#2196F3',
success: '#4CAF50',
warning: '#FFC107'
}
},
dark: {
colors: {
primary: '#2196F3',
secondary: '#FFCDD2',
accent: '#FF4081',
error: '#F44336',
info: '#00BCD4',
success: '#8BC34A',
warning: '#FFEB3B'
}
}
}
}
})
Цвета применяются через классы и свойство
color компонентов Vuetify.
color: назначает основной
цвет компонента.<v-btn color="primary">Primary Button</v-btn>
<v-alert type="success" color="success">Operation Successful</v-alert>
<v-card class="primary lighten-3">Lightened Card</v-card>
<v-btn class="accent-2">Accent Button</v-btn>
Vuetify автоматически подбирает контрастный текст в зависимости от выбранного цвета. Это гарантирует читаемость компонентов. Например, кнопка с тёмным фоном будет автоматически иметь светлый текст:
<v-btn color="primary darken-3">Dark Primary Button</v-btn>
Для кастомных цветов можно управлять контрастом вручную через классы
text--primary, text--secondary и другие.
Vuetify поддерживает семантические цвета для различных состояний:
success – успешное действие.error – ошибка или предупреждение.warning – предупреждение пользователя.info – информационные сообщения.Применение через компонент:
<v-alert type="warning">Warning Message</v-alert>
<v-progress-linear color="success" value="70"></v-progress-linear>
Цвета могут быть динамически изменены через реактивные переменные Vue. Это полезно для переключения тем или пользовательских настроек.
<template>
<v-btn :color="currentColor">Dynamic Color</v-btn>
</template>
<script>
export default {
data() {
return {
currentColor: 'primary'
}
},
mounted() {
setTimeout(() => this.currentColor = 'error', 2000)
}
}
</script>
Для сложных интерфейсов можно создавать собственные палитры с уникальными оттенками:
const customTheme = {
themes: {
light: {
colors: {
ocean: {
lighten5: '#E0F7FA',
lighten3: '#4DD0E1',
base: '#00ACC1',
darken2: '#00838F',
accent1: '#00E5FF'
}
}
}
}
}
Применение нового цвета:
<v-btn color="ocean base">Ocean Button</v-btn>
<v-card class="ocean lighten3">Ocean Card</v-card>
Vuetify позволяет использовать CSS-переменные для цветов, что облегчает глобальную настройку:
:root {
--v-primary-base: #1976D2;
--v-secondary-base: #424242;
}
<v-btn style="color: var(--v-primary-base)">Button</v-btn>
Это позволяет динамически менять цвета через JavaScript или пользовательские настройки без пересборки темы.
Цветовая система Vuetify обеспечивает гибкость и удобство, позволяя создавать как простые, так и сложные интерфейсы с единым визуальным стилем. Правильное использование оттенков, акцентов и семантических цветов обеспечивает читаемость, гармонию и профессиональный внешний вид компонентов.