Компонент Badge в библиотеке Naive UI служит для отображения небольших индикаторов рядом с другими элементами интерфейса, чаще всего для обозначения количества уведомлений, статуса или дополнительной информации. Badge поддерживает разные стили, размеры и положение относительно элемента, к которому он прикреплён.
import { NBadge, NButton } from 'naive-ui'
Простейший пример использования:
<template>
<n-badge count="5">
<n-button>Сообщения</n-button>
</n-badge>
</template>
В этом примере на кнопке появляется красный кружок с числом 5, указывающий количество сообщений.
max+.true,
отображается только точка, без числа.default, primary,
success, info, warning,
error.true, даже при
значении 0 бейдж будет видим.Пример с dot и type:
<template>
<n-badge dot type="success">
<n-button>Онлайн</n-button>
</n-badge>
</template>
В этом случае отображается маленькая зелёная точка рядом с кнопкой, указывающая на онлайн-статус.
Badge можно смещать относительно родительского элемента с помощью
свойства offset. Оно принимает массив из двух чисел
[x, y] в пикселях:
<template>
<n-badge count="12" :offset="[10, -5]">
<n-button>Уведомления</n-button>
</n-badge>
</template>
В данном примере бейдж смещается вправо на 10px и вверх на 5px относительно стандартного положения.
Если компонент не оборачивает другой элемент, можно использовать standalone badge, который отображается как отдельный индикатор:
<template>
<n-badge count="99+" />
</template>
Такой бейдж может применяться для глобальных уведомлений, например, на панели навигации.
Badge может сочетаться с другими компонентами Naive UI для интерактивного интерфейса:
<template>
<n-badge count="3">
<n-avatar src="avatar.png" />
</n-badge>
</template>
Все визуальные аспекты можно кастомизировать через CSS-переменные Naive UI:
--n-badge-color: цвет фона бейджа.--n-badge-text-color: цвет текста внутри.--n-badge-font-size: размер шрифта числа.--n-badge-border-radius: радиус скругления.Пример изменения цвета и размера:
<template>
<n-badge count="7" class="custom-badge">
<n-button>Почта</n-button>
</n-badge>
</template>
<style>
.custom-badge {
--n-badge-color: #ff9800;
--n-badge-text-color: #fff;
--n-badge-font-size: 12px;
--n-badge-border-radius: 8px;
}
</style>
Badge легко интегрируется с Vue реактивными переменными:
<template>
<n-badge :count="notifications">
<n-button>Сообщения</n-button>
</n-badge>
<n-button @click="addNotification">Добавить уведомление</n-button>
</template>
<script setup>
import { ref } from 'vue'
const notifications = ref(0)
const addNotification = () => {
notifications.value += 1
}
</script>
Количество бейджа обновляется динамически при изменении переменной
notifications.
dot для минималистичных индикаторов
статуса.max для предотвращения длинных чисел.Badge в Naive UI — лёгкий, гибкий и визуально выразительный инструмент для акцентирования внимания на важной информации, с полной поддержкой реактивности и кастомизации.