QFab (Floating Action Button) — компонент библиотеки Quasar, реализующий плавающую кнопку действий с возможностью раскрытия дополнительных опций. Используется для акцентирования ключевых пользовательских действий в интерфейсе и часто располагается поверх контента.
Основная идея — предоставить компактную точку входа для группы связанных действий без перегрузки интерфейса.
Минимальная реализация включает контейнер q-fab и
вложенные элементы q-fab-action:
<q-fab
color="primary"
icon="menu"
direction="up"
>
<q-fab-action color="secondary" icon="mail" />
<q-fab-action color="secondary" icon="alarm" />
</q-fab>
Ключевые параметры:
icon — иконка основной кнопкиdirection — направление раскрытия (up,
down, left, right)color — цвет кнопкиq-fab-action — дочерние элементы действийКомпонент поддерживает четыре направления:
up — вверх (по умолчанию)down — внизleft — влевоright — вправо<q-fab direction="left" icon="add">
<q-fab-action icon="edit" />
<q-fab-action icon="delete" />
</q-fab>
Выбор направления зависит от расположения FAB на экране и доступного пространства.
QFab может контролироваться программно через
v-model:
<q-fab v-model="opened" icon="menu">
<q-fab-action icon="mail" />
</q-fab>
export default {
data () {
return {
opened: false
}
}
}
Поведение:
true — раскрытfalse — свернутЭто позволяет синхронизировать состояние с логикой приложения.
Компонент поддерживает события:
@show — при раскрытии@hide — при закрытии<q-fab @show="onOpen" @hide="onClose">
<q-fab-action icon="mail" />
</q-fab>
<q-fab size="lg" icon="add">
<q-fab-action size="sm" icon="edit" />
</q-fab>
Возможные значения:
xs, sm, md, lg,
xl<q-fab color="accent" text-color="white">
<q-fab-action color="orange" icon="star" />
</q-fab>
<q-fab flat icon="add">
<q-fab-action outline icon="edit" />
</q-fab>
Quasar автоматически применяет анимации, но их можно контролировать:
<q-fab
transition-show="scale"
transition-hide="scale"
>
Другие варианты:
jump-downfadeslide-up<q-fab persistent>
По умолчанию:
q-fab-action меню закрываетсяС persistent:
Каждому действию можно добавить текстовую подпись:
<q-fab icon="menu">
<q-fab-action icon="mail" label="Почта" />
<q-fab-action icon="alarm" label="Будильник" />
</q-fab>
<q-fab label-position="left">
Можно изменять иконку при раскрытии:
<q-fab
icon="menu"
active-icon="close"
>
Обычно QFab размещается с помощью класса позиционирования:
<div class="fixed-bottom-right q-pa-md">
<q-fab icon="add">
<q-fab-action icon="edit" />
</q-fab>
</div>
Популярные позиции:
fixed-bottom-rightfixed-bottom-leftfixed-top-rightfixed-top-leftВ рамках QLayout FAB часто размещается поверх
страниц:
<q-page>
<div class="fixed-bottom-right q-pa-md">
<q-fab icon="add">
<q-fab-action icon="edit" />
</q-fab>
</div>
</q-page>
<q-fab icon="menu">
<q-fab-action v-if="isAdmin" icon="settings" />
<q-fab-action icon="help" />
</q-fab>
<q-fab icon="menu">
<q-fab-action
v-for="item in actions"
:key="item.icon"
:icon="item.icon"
:label="item.label"
/>
</q-fab>
<q-fab icon="menu">
<q-fab-action icon="folder">
<q-fab>
<q-fab-action icon="file" />
</q-fab>
</q-fab-action>
</q-fab>
aria-label для кнопокlabel) улучшают понимание<q-fab icon="add" aria-label="Добавить элемент">
QFab особенно эффективен в мобильных интерфейсах:
Часто используется для:
Рекомендации:
q-fab-action| Компонент | Назначение |
|---|---|
| QFab | Группа быстрых действий |
| QBtn | Одиночное действие |
| QMenu | Контекстное меню |
| QSpeedDial (аналог) | Похожая концепция в других UI |
1. Перекрытие важного контента
2. Слишком много действий
3. Отсутствие подписей
4. Неправильное направление
<template>
<div class="fixed-bottom-right q-pa-md">
<q-fab
v-model="fab"
icon="add"
active-icon="close"
color="primary"
direction="up"
>
<q-fab-action
color="secondary"
icon="edit"
label="Редактировать"
@click="editItem"
/>
<q-fab-action
color="secondary"
icon="delete"
label="Удалить"
@click="deleteItem"
/>
<q-fab-action
color="secondary"
icon="share"
label="Поделиться"
@click="shareItem"
/>
</q-fab>
</div>
</template>
<script>
export default {
data () {
return {
fab: false
}
},
methods: {
editItem () {},
deleteItem () {},
shareItem () {}
}
}
</script>
QFab легко адаптируется под:
Благодаря тесной интеграции с Vue и системой компонентов Quasar, его можно комбинировать с любыми реактивными данными и состояниями.