QBtn — базовый компонент библиотеки Quasar Framework,
предназначенный для создания кнопок с широкими возможностями стилизации,
поведения и интеграции с другими элементами интерфейса. Он является
универсальным элементом управления, применяемым как для простых
действий, так и для сложных сценариев взаимодействия.
Компонент реализован на базе Vue.js и полностью поддерживает реактивную модель данных, слоты и систему директив.
Минимальный пример кнопки:
<q-btn label="Нажми меня" />
Кнопка отображает текст, заданный через свойство label.
По умолчанию применяется стандартная тема и базовые стили.
Альтернативный вариант с использованием слотов:
<q-btn>
Нажми меня
</q-btn>
label — текст кнопкиicon — иконка слеваicon-right — иконка справа<q-btn label="Сохранить" icon="save" />
<q-btn label="Далее" icon-right="arrow_forward" />
color — основной цвет кнопкиtext-color — цвет текста<q-btn label="Primary" color="primary" />
<q-btn label="Custom" color="green" text-color="black" />
Цвета соответствуют палитре, определённой в конфигурации Quasar.
flat — без фонаoutline — с рамкойunelevated — без тениpush — эффект нажатияglossy — глянцевый стиль<q-btn label="Flat" flat />
<q-btn label="Outline" outline />
<q-btn label="Push" push />
size="sm | md | lg | xl"px, em)<q-btn label="Small" size="sm" />
<q-btn label="Large" size="lg" />
round — круглая кнопкаrounded — скруглённые углы<q-btn icon="add" round color="primary" />
<q-btn label="Rounded" rounded />
Основное событие — @click:
<q-btn label="Клик" @click="handleClick" />
methods: {
handleClick () {
console.log('Нажато')
}
}
loading — отображение индикатора загрузкиdisable — отключение кнопки<q-btn label="Загрузка" loading />
<q-btn label="Отключено" disable />
При loading кнопка автоматически блокирует
взаимодействие.
Можно кастомизировать:
<q-btn label="Отправка" loading>
<template v-slot:loading>
<q-spinner-hourglass />
</template>
</q-btn>
QBtn может выступать как ссылка или элемент
маршрутизации.
<q-btn label="На главную" to="/" />
Поддерживаются свойства:
to — путь (Vue Router)replaceexact<q-btn label="Google" href="https://google.com" target="_blank" />
Quasar поддерживает Material Icons и другие наборы:
<q-btn icon="menu" flat />
Комбинирование:
<q-btn icon="add" label="Добавить" color="primary" />
Компонент QBtnGroup используется для объединения:
<q-btn-group>
<q-btn label="Left" />
<q-btn label="Middle" />
<q-btn label="Right" />
</q-btn-group>
Обеспечивает визуальную связность и единое поведение.
Интеграция с QMenu:
<q-btn label="Меню">
<q-menu>
<q-list>
<q-item clickable v-close-popup>
<q-item-section>Пункт 1</q-item-section>
</q-item>
</q-list>
</q-menu>
</q-btn>
Плавающая кнопка:
<q-btn fab icon="add" color="primary" />
Расширенный вариант:
<q-fab icon="menu" direction="up">
<q-fab-action icon="add" />
<q-fab-action icon="edit" />
</q-fab>
QBtn автоматически добавляет:
role="button"Дополнительно:
<q-btn label="Удалить" aria-label="Удалить элемент" />
Кнопка может выступать как submit:
<q-btn label="Отправить" type="submit" />
Или reset:
<q-btn label="Сброс" type="reset" />
Пример с реактивными данными:
<q-btn
:label="isLoading ? 'Загрузка...' : 'Отправить'"
:loading="isLoading"
@click="submit"
/>
data () {
return {
isLoading: false
}
},
methods: {
async submit () {
this.isLoading = true
await new Promise(r => setTimeout(r, 2000))
this.isLoading = false
}
}
Можно использовать стандартные классы:
<q-btn class="my-custom-btn" label="Стиль" />
.my-custom-btn {
font-weight: bold;
border-radius: 12px;
}
Компонент автоматически адаптируется под:
Пример:
<q-btn color="dark" text-color="white" />
<q-btn color="positive" label="Подтвердить" />
<q-btn color="negative" icon="delete" flat />
<q-btn icon="settings" round flat />
loadingunelevated вместо теней при массовом
рендерингеQBtn:
Компонент также поддерживает директивы Quasar, такие как
v-ripple, и может быть расширен через пользовательские
обёртки.