Vue3+Ts+Vite项目(第十篇)——el-breadcrumb二次封装实现面包屑组件,实现面包屑过渡动画

简介

使用 element-plusel-breadcrumb 组件,实现根据页面路由动态生成面包屑导航,并实现面包屑导航的切换过渡动画

一、先看效果加粗样式

1.1 静态效果

在这里插入图片描述

1.2 动态效果

请添加图片描述

二、全量代码

<script lang="ts" setup>
import { ref, watch } from 'vue';
import type { RouteLocationNormalizedLoaded } from 'vue-router';
import { useRouter } from 'vue-router';
const { currentRoute } = useRouter();
const breadcrumbItems = ref();
// 监听当前路由的name变化
watch(
	() => currentRoute.value,
	(route: RouteLocationNormalizedLoaded) => {
		breadcrumbItems.value = route.matched;
	},
	{ immediate: true }
);
</script>

<template>
	<el-breadcrumb separator="/">
		<transition-group name="breadcrumb">
			<el-breadcrumb-item
				:key="item.path"
				v-for="item in breadcrumbItems"
				:to="{ path: `${item.path}` }"
				class="breadcrumb-item">
				{{ item.meta.title }}
			</el-breadcrumb-item>
		</transition-group>
	</el-breadcrumb>
</template>

<style lang="scss">
.el-breadcrumb {
	height: 48px;
	line-height: 48px;
	margin-left: 16px;
}
.el-breadcrumb__inner,
.el-breadcrumb__inner a {
	font-weight: 400 !important;
}

/* 面包屑过渡动画 */
.breadcrumb-enter-active {
	transition: all 0.4s;
}

.breadcrumb-leave-active {
	transition: all 0.3s;
}

.breadcrumb-enter-from,
.breadcrumb-leave-active {
	opacity: 0;
	transform: translateX(20px);
}

.breadcrumb-leave-active {
	position: absolute;
}
</style>

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Vue 2中实现面包屑导航栏可以通过以下步骤完成: 1. 创建一个面包屑组件 `Breadcrumb.vue`: ```vue <template> <nav class="breadcrumb"> <ul> <li v-for="(crumb, index) in crumbs" :key="index" :class="{ active: index === crumbs.length - 1 }"> <router-link :to="crumb.path">{{ crumb.label }}</router-link> </li> </ul> </nav> </template> <script> export default { name: 'Breadcrumb', computed: { crumbs() { // 获取当前路由的路径 const routePath = this.$route.path; // 分割路径为数组 const pathSegments = routePath.split('/').filter(segment => segment !== ''); // 构建面包屑导航数据 const crumbs = pathSegments.map((segment, index) => { const path = `/${pathSegments.slice(0, index + 1).join('/')}`; return { path, label: segment }; }); return crumbs; } } }; </script> <style> .breadcrumb { background-color: #f5f5f5; padding: 10px; } .breadcrumb ul { list-style: none; padding: 0; margin: 0; } .breadcrumb li { display: inline-block; } .breadcrumb li:not(:last-child):after { content: '/'; margin: 0 5px; } .breadcrumb li.active { font-weight: bold; } </style> ``` 2. 在需要使用面包屑导航栏的组件中引入并使用 `Breadcrumb` 组件: ```vue <template> <div> <breadcrumb></breadcrumb> <!-- 其他组件内容 --> </div> </template> <script> import Breadcrumb from './Breadcrumb.vue'; export default { name: 'YourComponent', components: { Breadcrumb } }; </script> ``` 上述代码中,面包屑导航栏会根据当前路由的路径动态生成面包屑导航数据,并且只有最后一个路径会被标记为活动状态。你可以根据需要自定义样式和路由配置。希望对你有所帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

礼貌而已

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值