Компонент v-breadcrumbs в Vuetify используется для
отображения навигационной цепочки страниц, позволяя пользователю видеть
текущую позицию в структуре сайта и легко перемещаться между уровнями.
Он полностью настраиваемый и интегрируется с Vue Router для динамической
генерации путей.
Базовый синтаксис компонента выглядит следующим образом:
<v-breadcrumbs :items="items" divider="/">
</v-breadcrumbs>
Где items — это массив объектов, каждый из которых
представляет отдельный элемент цепочки:
data() {
return {
items: [
{ text: 'Главная', href: '/' },
{ text: 'Категории', href: '/categories' },
{ text: 'Электроника', href: '/categories/electronics' },
{ text: 'Смартфоны', disabled: true }
]
}
}
text — отображаемый текст
элемента.href — URL, на который ведет
элемент.disabled — если true,
элемент не кликабельный и отображается как текущая страница.Разделитель между элементами можно задавать с помощью свойства
divider. Оно поддерживает как текстовые символы, так и
иконки Vuetify:
<v-breadcrumbs :items="items" divider=">"></v-breadcrumbs>
<v-breadcrumbs :items="items" divider="$mdi-chevron-right"></v-breadcrumbs>
Использование иконок через синтаксис Material Design Icons
($mdi-) позволяет создать более современный и визуально
привлекательный интерфейс.
Для динамической маршрутизации удобнее использовать свойство
to вместо href, что позволяет автоматически
работать с Vue Router:
<v-breadcrumbs>
<v-breadcrumbs-item :to="{ name: 'home' }">Главная</v-breadcrumbs-item>
<v-breadcrumbs-item :to="{ name: 'categories' }">Категории</v-breadcrumbs-item>
<v-breadcrumbs-item disabled>Смартфоны</v-breadcrumbs-item>
</v-breadcrumbs>
Использование v-breadcrumbs-item дает полный контроль
над каждым элементом, включая стили, обработчики событий и атрибуты.
По умолчанию хлебные крошки горизонтальные, но с помощью CSS можно адаптировать их под вертикальный вариант:
<v-breadcrumbs :items="items" class="vertical-breadcrumbs"></v-breadcrumbs>
<style>
.vertical-breadcrumbs {
display: flex;
flex-direction: column;
}
</style>
Это удобно для боковых панелей или мобильных версий сайта.
Vuetify предоставляет возможность изменять цвета через стандартные
пропсы color и active-class:
<v-breadcrumbs :items="items" divider=">">
<template v-slot:item="{ item, disabled }">
<v-breadcrumbs-item
:to="item.to"
:disabled="disabled"
color="primary"
active-class="text--accent"
>
{{ item.text }}
</v-breadcrumbs-item>
</template>
</v-breadcrumbs>
color — основной цвет текста
элемента.active-class — класс, который
применяется к текущему элементу, позволяет использовать кастомные стили
Vuetify.Компонент v-breadcrumbs поддерживает несколько слотов,
что дает гибкость при отображении:
item — кастомизация каждого элемента,
можно вставлять иконки или дополнительные теги.divider — кастомизация разделителя
между элементами.default — полный контроль над
разметкой, позволяет создавать нестандартные хлебные крошки.Пример с использованием иконок и кастомного разделителя:
<v-breadcrumbs :items="items">
<template v-slot:divider>
<v-icon small>mdi-chevron-right</v-icon>
</template>
<template v-slot:item="{ item, disabled }">
<v-breadcrumbs-item :to="item.to" :disabled="disabled">
<v-icon left small>mdi-folder</v-icon>
{{ item.text }}
</v-breadcrumbs-item>
</template>
</v-breadcrumbs>
Использование реактивного массива items позволяет
автоматически обновлять цепочку при изменении маршрутов или состояния
приложения. Например, при переходе на страницу категории:
watch: {
'$route'(to) {
this.updateBreadcrumbs(to)
}
},
methods: {
updateBreadcrumbs(route) {
this.items = [
{ text: 'Главная', to: { name: 'home' } },
{ text: route.meta.category, to: { name: 'categories' } },
{ text: route.name, disabled: true }
]
}
}
Такой подход обеспечивает полную синхронизацию хлебных крошек с маршрутизатором и бизнес-логикой приложения.
Для мобильных устройств можно скрывать часть элементов и отображать их через выпадающее меню:
<v-breadcrumbs :items="items" class="d-none d-md-flex"></v-breadcrumbs>
<v-menu class="d-flex d-md-none">
<template v-slot:activator="{ on, attrs }">
<v-btn v-bind="attrs" v-on="on">Меню</v-btn>
</template>
<v-list>
<v-list-item v-for="item in items" :key="item.text" :to="item.to">
{{ item.text }}
</v-list-item>
</v-list>
</v-menu>
Использование утилит Vuetify для отображения элементов по breakpoint позволяет обеспечить удобство навигации на любых устройствах.
v-breadcrumbs — универсальный компонент для построения
навигации, который поддерживает статические и динамические маршруты,
кастомные разделители, цвета, иконки и слоты. Реактивность и интеграция
с Vue Router делают его незаменимым инструментом для создания сложных
интерфейсов с понятной навигационной структурой.