Библиотека Quasar предоставляет компонент QBadge, который позволяет визуально выделять элементы интерфейса с помощью небольших бейджей, отображающих числовые значения, статусы или индикаторы событий. QBadge часто применяется вместе с кнопками, иконками, списками и карточками для улучшения визуальной информативности.
Компонент QBadge может использоваться как самостоятельный элемент или оборачивать другой компонент:
<q-badge label="5" color="primary" />
Параметры:
label — текст или число, отображаемое внутри бейджа.
Может быть строкой или числом.color — цвет бейджа. Поддерживаются стандартные цвета
Quasar (primary, secondary,
accent, positive, negative,
warning, info и пользовательские цвета через
CSS).text-color — цвет текста внутри бейджа.align — позиционирование бейджа относительно
родительского элемента (top-right, top-left,
bottom-right, bottom-left).floating — делает бейдж плавающим, поверх родительского
компонента.outline — отображение бейджа с рамкой и прозрачным
фоном.transparent — делает фон бейджа прозрачным.Пример использования с кнопкой:
<q-btn color="primary" label="Сообщения">
<q-badge color="red" floating label="7" align="top-right" />
</q-btn>
В этом примере QBadge визуально располагается в верхнем правом углу кнопки и показывает количество сообщений.
QBadge позволяет гибко управлять положением
относительно родительского компонента. Используются свойства
align и floating.
Примеры:
<q-icon name="notifications">
<q-badge color="red" floating label="3" align="top-right" />
</q-icon>
<q-icon name="mail">
<q-badge color="green" floating label="!" align="bottom-left" />
</q-icon>
top-right — верхний правый уголtop-left — верхний левый уголbottom-right — нижний правый уголbottom-left — нижний левый уголИспользование floating позволяет бейджу не занимать
отдельное место в потоке документа, а накладываться поверх родителя.
Цвет и текст:
<q-badge color="positive" text-color="white" label="Success" />
<q-badge color="negative" text-color="white" label="Error" />
<q-badge color="warning" text-color="black" label="Warning" />
Outline и прозрачный фон:
<q-badge outline color="primary" label="Outline" />
<q-badge transparent color="secondary" label="Transparent" />
Размеры бейджей задаются через CSS-классы или встроенные стили. Например:
<q-badge label="99+" class="q-ma-xs" style="font-size: 14px; padding: 2px 6px;" />
QBadge можно использовать для отображения динамических числовых данных, например, количества уведомлений:
<template>
<q-btn color="primary" label="Уведомления">
<q-badge
color="red"
floating
:label="notificationsCount"
align="top-right"
/>
</q-btn>
</template>
<script setup>
import { ref } from 'vue'
const notificationsCount = ref(0)
// Симуляция поступления уведомлений
setInterval(() => {
notificationsCount.value = Math.floor(Math.random() * 10)
}, 2000)
</script>
В этом примере значение бейджа автоматически обновляется каждые 2 секунды, демонстрируя реактивность Vue и Quasar.
Иконки:
<q-icon name="shopping_cart">
<q-badge color="red" floating label="12" align="top-right" />
</q-icon>
Списки:
<q-list bordered padding>
<q-item clickable v-for="item in items" :key="item.name">
<q-item-section>{{ item.name }}</q-item-section>
<q-item-section side>
<q-badge :label="item.count" color="secondary" />
</q-item-section>
</q-item>
</q-list>
QBadge можно кастомизировать через CSS-классы и переменные Quasar. Например, изменение радиуса и теней:
<q-badge
label="New"
color="accent"
class="my-badge"
/>
<style scoped>
.my-badge {
border-radius: 8px;
box-shadow: 0 2px 4px rgba(0,0,0,0.2);
font-weight: bold;
}
</style>
С карточками QCard:
<q-card style="width: 200px">
<q-card-section>
Заголовок карточки
<q-badge color="positive" floating label="!" align="top-right" />
</q-card-section>
<q-card-actions>
<q-btn flat label="Действие" />
</q-card-actions>
</q-card>
С вкладками QTab:
<q-tabs v-model="tab" dense>
<q-tab name="inbox" label="Inbox">
<q-badge color="red" floating label="5" align="top-right" />
</q-tab>
<q-tab name="sent" label="Sent" />
</q-tabs>
В этих примерах бейджи служат для визуального оповещения пользователя о количестве элементов или новых событиях.
Хотя QBadge не имеет встроенных анимаций, их можно добавлять через CSS переходы и классы Quasar:
<q-badge
label="New"
color="accent"
class="q-transition-scale"
/>
Класс q-transition-scale обеспечивает плавное появление
и исчезновение бейджа при изменении видимости.
Использование QBadge делает интерфейс более информативным, визуально акцентирует внимание на ключевых элементах и позволяет быстро сообщать пользователю актуальные данные. Его гибкость в позиционировании, цветовой палитре и стилизации позволяет интегрировать бейджи в любые компоненты Quasar.