Quasar предоставляет мощный инструмент для управления темами и цветами приложения через систему цветовых схем. Цветовые схемы позволяют централизованно определять основные цвета интерфейса, фоновые оттенки и цвета текста, обеспечивая согласованность визуального стиля во всем приложении.
В Quasar каждая цветовая схема определяется через объект
colors и может быть подключена глобально или локально для
конкретных компонентов. Основные точки управления цветами:
Цветовые схемы задаются в файле quasar.config.js в
разделе framework.config. Пример глобальной настройки
темы:
framework: {
config: {
brand: {
primary: '#1976D2',
secondary: '#26A69A',
accent: '#9C27B0',
positive: '#4CAF50',
negative: '#F44336',
info: '#2196F3',
warning: '#FB8C00'
}
}
}
В этом объекте brand задаются все ключевые цвета
приложения. После конфигурации Quasar автоматически подставляет эти
значения во все компоненты, поддерживающие темизацию.
Quasar поддерживает динамическое обновление цветовой схемы без
перезагрузки страницы. Для этого используется метод
setBrand из $q объекта:
this.$q.colors.setBrand({
primary: '#FF5722',
secondary: '#00BCD4'
});
После вызова setBrand все компоненты, использующие цвета
primary и secondary, мгновенно изменят свой
внешний вид.
Для удобства можно хранить несколько схем в объекте и переключать их по событию, например, при смене темы с светлой на тёмную:
const themes = {
light: {
primary: '#1976D2',
secondary: '#26A69A'
},
dark: {
primary: '#BB86FC',
secondary: '#03DAC6'
}
};
changeTheme(theme) {
this.$q.colors.setBrand(themes[theme]);
}
Некоторые компоненты Quasar позволяют переопределять цвета локально через свойства:
<q-btn color="primary" text-color="white" label="Нажми меня" />
<q-card class="my-card" :style="{ backgroundColor: $q.colors.getBrand('secondary') }">
<q-card-section>Контент карточки</q-card-section>
</q-card>
Метод $q.colors.getBrand('colorName') возвращает текущее
значение цвета, что позволяет применять динамическое оформление даже в
inline-стилях.
Для разработки уникального визуального стиля можно определить собственный набор цветов, выходящий за рамки стандартных семантических:
framework: {
config: {
brand: {
primary: '#1E1E2F',
secondary: '#3F3F5E',
accent: '#FF4081',
highlight: '#FFC107',
background: '#121212'
}
}
}
После этого пользовательские цвета можно использовать в компонентах
через getBrand, добавляя новые свойства в объект
brand:
<div :style="{ backgroundColor: $q.colors.getBrand('background'), color: $q.colors.getBrand('highlight') }">
Пользовательский блок
</div>
Quasar автоматически создает CSS-переменные для всех цветов из
объекта brand. Их можно использовать в стилях
компонентов:
.my-button {
background-color: var(--q-color-primary);
color: var(--q-color-accent);
}
Использование CSS-переменных позволяет интегрировать Quasar-тему с внешними библиотеками стилей и обеспечивать единообразное оформление без дублирования цветов в стилях.
Quasar имеет встроенную поддержку светлой и
тёмной темы через объект dark:
framework: {
config: {
dark: 'auto'
}
}
'auto' – система автоматически выбирает тему в
зависимости от предпочтений пользователя.true / false – принудительное включение
светлой или тёмной темы.Цвета можно настроить отдельно для тёмной темы, используя
brand.dark:
brand: {
primary: '#1976D2',
dark: {
primary: '#BB86FC',
secondary: '#03DAC6'
}
}
Метод setBrand также поддерживает переключение на тёмные
цвета при активации темы:
this.$q.dark.set(true); // Включение тёмной темы
this.$q.colors.setBrand(this.$q.colors.getBrand('dark'));
brand.Эта система позволяет создавать гибкие, масштабируемые и эстетически согласованные интерфейсы в рамках Quasar, обеспечивая единый стиль приложения независимо от масштаба и сложности проекта.