Badge — это компонент визуального индикатора, предназначенный для отображения небольшого количества информации поверх другого элемента интерфейса. Чаще всего используется для:
Badge обычно размещается в углу родительского элемента и представляет собой компактную метку с числовым или текстовым значением. Компонент активно применяется в пользовательских интерфейсах административных панелей, систем уведомлений, мессенджеров и интерфейсов электронной коммерции.
В библиотеке Element Plus компонент реализован как
ElBadge.
После установки библиотеки Element Plus компонент доступен для использования внутри шаблонов Vue.
import { ElBadge } from 'element-plus'
В шаблоне компонент используется следующим образом:
<el-badge :value="12">
<el-button>Уведомления</el-button>
</el-badge>
Badge автоматически позиционируется относительно вложенного элемента.
Минимальная конфигурация требует передачи значения через свойство
value.
<el-badge :value="5">
<el-button>Сообщения</el-button>
</el-badge>
Результат:
5.Компонент поддерживает размещение практически поверх любого элемента:
Пример с иконкой:
<el-badge :value="8">
<el-icon><Bell /></el-icon>
</el-badge>
Badge может отображать не только числа, но и строковые значения.
<el-badge value="new">
<el-button>Письма</el-button>
</el-badge>
Возможные применения:
Если количество уведомлений может быть большим, используется свойство
max. При превышении указанного значения выводится формат
max+.
<el-badge :value="120" :max="99">
<el-button>Уведомления</el-button>
</el-badge>
Результат отображения:
99+
Параметр полезен для:
Пример:
<el-badge :value="320" :max="999">
<el-icon><Message /></el-icon>
</el-badge>
Badge может использоваться как простой индикатор без числового
значения. Для этого применяется свойство is-dot.
<el-badge is-dot>
<el-button>Обновления</el-button>
</el-badge>
Результат:
Типичные сценарии:
Иногда требуется программно скрывать индикатор. Для этого
используется свойство hidden.
<el-badge :value="3" :hidden="isHidden">
<el-button>Уведомления</el-button>
</el-badge>
const isHidden = ref(false)
При значении true Badge полностью исчезает из
интерфейса.
Это позволяет реализовать:
По умолчанию Badge располагается в правом верхнем углу элемента.
Позицию можно скорректировать с помощью свойства
offset.
<el-badge :value="6" :offset="[10, 10]">
<el-button>Почта</el-button>
</el-badge>
Формат:
[offsetX, offsetY]
Где:
offsetX — горизонтальное смещениеoffsetY — вертикальное смещениеПример:
<el-badge :value="10" :offset="[-5, 5]">
<el-icon><ChatDotRound /></el-icon>
</el-badge>
Это особенно полезно при работе с:
Badge поддерживает несколько цветовых типов через свойство
type.
Доступные варианты:
| Тип | Назначение |
|---|---|
| primary | основной |
| success | успешная операция |
| warning | предупреждение |
| danger | ошибка |
| info | информационный |
Пример:
<el-badge :value="8" type="success">
<el-button>Задачи</el-button>
</el-badge>
Другой пример:
<el-badge value="!" type="warning">
<el-icon><Warning /></el-icon>
</el-badge>
Цвет автоматически соответствует дизайн-системе Element Plus.
Badge может использоваться как самостоятельный элемент.
<el-badge :value="4" />
В таком случае он отображается как отдельная метка.
Это удобно для:
Пример:
<div>
Заказы <el-badge :value="12" />
</div>
Badge часто применяется в интерфейсах навигации.
<ul>
<li>
Входящие
<el-badge :value="15" />
</li>
<li>
Отправленные
<el-badge :value="2" type="success" />
</li>
</ul>
Это позволяет визуально показывать:
Badge хорошо сочетается с компонентом Tabs.
<el-tabs>
<el-tab-pane label="Сообщения">
<template #label>
<el-badge :value="5">
<span>Сообщения</span>
</el-badge>
</template>
</el-tab-pane>
</el-tabs>
Подобная конструкция применяется в:
Badge легко связывается с реактивным состоянием.
<template>
<el-badge :value="notifications">
<el-button>Уведомления</el-button>
</el-badge>
</template>
<script setup>
import { ref } from 'vue'
const notifications = ref(3)
</script>
Изменение значения автоматически обновляет интерфейс.
Пример увеличения количества:
notifications.value++
<template>
<div class="notification-panel">
<el-badge :value="messages">
<el-button>Сообщения</el-button>
</el-badge>
<el-badge :value="alerts" type="warning">
<el-button>Предупреждения</el-button>
</el-badge>
<el-badge :value="tasks" type="success">
<el-button>Задачи</el-button>
</el-badge>
</div>
</template>
<script setup>
import { ref } from 'vue'
const messages = ref(12)
const alerts = ref(2)
const tasks = ref(5)
</script>
Подобная структура используется в:
Хотя Element Plus предоставляет готовый дизайн, внешний вид можно изменять через CSS.
Пример:
.el-badge__content {
font-size: 12px;
font-weight: 600;
}
Изменение размеров:
.el-badge__content {
min-width: 22px;
height: 22px;
}
Дополнительная кастомизация позволяет адаптировать компонент под:
При использовании Badge в крупных интерфейсах следует учитывать несколько особенностей.
Минимизировать частые обновления
Если значение Badge обновляется очень часто (например, в реальном времени), рекомендуется:
Не перегружать интерфейс
Слишком большое количество индикаторов может усложнять восприятие интерфейса.
Рекомендуется использовать Badge только для:
Использовать ограничение max
Большие числа ухудшают читаемость, поэтому лучше применять формат
99+.
| Свойство | Тип | Описание |
|---|---|---|
| value | number / string | значение Badge |
| max | number | максимальное отображаемое число |
| is-dot | boolean | режим точки |
| hidden | boolean | скрытие Badge |
| type | string | цветовой тип |
| offset | array | смещение позиции |
Badge используется в интерфейсах для решения нескольких задач:
Системы уведомлений
Электронная коммерция
Социальные сети
Административные панели
Компактность и визуальная заметность делают Badge одним из базовых элементов пользовательских интерфейсов, особенно в сложных веб-приложениях.