Компонент Breadcrumb предназначен для отображения навигационного пути пользователя по иерархии страниц. Он помогает понять, где в структуре приложения находится пользователь, и предоставляет быстрый доступ к родительским разделам. В Element Plus Breadcrumb реализован гибко и поддерживает кастомизацию, включая слоты, иконки и управление разделителями.
Базовая структура Breadcrumb состоит из контейнера
<el-breadcrumb> и элементов
<el-breadcrumb-item>:
<template>
<el-breadcrumb separator="/">
<el-breadcrumb-item to="/">Главная</el-breadcrumb-item>
<el-breadcrumb-item to="/products">Продукты</el-breadcrumb-item>
<el-breadcrumb-item>Электроника</el-breadcrumb-item>
</el-breadcrumb>
</template>
<el-breadcrumb> — контейнер,
который объединяет все элементы.separator — строка или символ,
разделяющий элементы (по умолчанию "/").<el-breadcrumb-item> — отдельный
элемент пути. Если указать атрибут to, элемент становится
ссылкой (поддерживается интеграция с vue-router).vue-routerДля динамической навигации часто используют атрибут
to, который работает как в
<router-link>:
<el-breadcrumb separator=">">
<el-breadcrumb-item to="/">Главная</el-breadcrumb-item>
<el-breadcrumb-item to="/blog">Блог</el-breadcrumb-item>
<el-breadcrumb-item :to="{ name: 'post', params: { id: 123 } }">Статья</el-breadcrumb-item>
</el-breadcrumb>
to="/" — прямой путь к корню.:to="{ name: 'post', params: { id: 123 } }" —
использование именованных маршрутов с параметрами.Разделитель можно задавать разными способами:
<el-breadcrumb separator="/">
<el-breadcrumb-item>Главная</el-breadcrumb-item>
<el-breadcrumb-item>Каталог</el-breadcrumb-item>
</el-breadcrumb>
<el-breadcrumb separator=">">
<el-breadcrumb-item>Главная</el-breadcrumb-item>
<el-breadcrumb-item>Каталог</el-breadcrumb-item>
</el-breadcrumb>
<el-breadcrumb>
<el-breadcrumb-item>Главная</el-breadcrumb-item>
<el-breadcrumb-item>Каталог</el-breadcrumb-item>
<template #separator>
<i class="el-icon-arrow-right"></i>
</template>
</el-breadcrumb>
separator позволяет задать
текстовый разделитель.separator позволяет использовать иконки или
кастомные компоненты.Breadcrumb часто формируется динамически на основе состояния приложения или данных маршрутов:
<template>
<el-breadcrumb separator="/">
<el-breadcrumb-item v-for="(item, index) in breadcrumbs" :key="index" :to="item.path">
{{ item.label }}
</el-breadcrumb-item>
</el-breadcrumb>
</template>
<script>
export default {
data() {
return {
breadcrumbs: [
{ label: 'Главная', path: '/' },
{ label: 'Каталог', path: '/catalog' },
{ label: 'Телевизоры', path: '/catalog/tv' },
],
};
},
};
</script>
v-for позволяет легко генерировать
элементы из массива объектов.path), так и
отображаемое название (label).Element Plus позволяет настраивать внешний вид Breadcrumb через CSS или SCSS, а также через пропсы:
<el-breadcrumb separator="/" class="custom-breadcrumb">
<el-breadcrumb-item>Главная</el-breadcrumb-item>
<el-breadcrumb-item>Каталог</el-breadcrumb-item>
</el-breadcrumb>
<style scoped>
.custom-breadcrumb {
font-size: 16px;
color: #409eff;
}
.custom-breadcrumb .el-breadcrumb__item {
font-weight: 500;
}
.custom-breadcrumb .el-breadcrumb__separator {
margin: 0 8px;
color: #909399;
}
</style>
.el-breadcrumb__item — стиль отдельного элемента..el-breadcrumb__separator — стиль разделителя.Для улучшения визуального восприятия к элементам можно добавлять иконки:
<el-breadcrumb separator="/">
<el-breadcrumb-item>
<i class="el-icon-house"></i>
Главная
</el-breadcrumb-item>
<el-breadcrumb-item>
<i class="el-icon-menu"></i>
Каталог
</el-breadcrumb-item>
</el-breadcrumb>
el-icon-*.Компонент поддерживает слоты для максимальной гибкости:
<el-breadcrumb separator="/">
<el-breadcrumb-item>
<template #default>
<span style="color: red">Главная</span>
</template>
</el-breadcrumb-item>
<el-breadcrumb-item>
<template #default>
<router-link to="/catalog">Каталог</router-link>
</template>
</el-breadcrumb-item>
</el-breadcrumb>
default позволяет полностью управлять содержимым
элемента.Breadcrumb хорошо работает с вложенными структурами и может комбинироваться с динамическим формированием из маршрутов Vue Router:
computed: {
breadcrumbs() {
const route = this.$route;
const matched = route.matched;
return matched.map(r => ({
label: r.meta.title || r.name,
path: r.path,
}));
},
}
title,
используемое для отображения.to обеспечивает плавную навигацию без перезагрузки
страницы.Эти возможности делают Breadcrumb в Element Plus мощным инструментом для навигации и структурирования интерфейсов.