breadCrumb.vue
<script setup lang="ts" >
import { ArrowRight } from '@element-plus/icons-vue'
import SvgIcon from '@/components/SvgIcon.vue'
const props = defineProps(['item','iconName'])
</script>
<template>
<div class="breadCrumb">
<SvgIcon :icon-name="props.iconName.name" class="bread-crumb-icon"></SvgIcon>
<el-breadcrumb :separator-icon="ArrowRight">
<el-breadcrumb-item :to="{ path: '/set' }">{{ props.item.first }}</el-breadcrumb-item>
<el-breadcrumb-item v-if="props.item.second">{{ props.item.second }}</el-breadcrumb-item>
</el-breadcrumb>
</div>
</template>
<style scoped lang="scss">
.breadCrumb {
width: 100%;
height: 30px;
// background-color: rgb(196, 174, 217);
padding: 0 20px;
display: flex;
align-items: center;
background-color: rgb(199, 188, 199);
.bread-crumb-icon {
margin-left: 15px;
margin-right: 5px;
cursor: pointer;
}
}
:deep(.el-breadcrumb__item) {
height: 30px;
line-height: 30px;
font-size: 16px;
}
// 进入
:deep(.el-breadcrumb__inner:hover) {
background-image: -webkit-linear-gradient(bottom, #543278, #fd8403, yellow);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
cursor: pointer;
}
//离开颜色
:deep(.el-breadcrumb__inner.is-link:hover) {
color: rgb(119, 117, 117);
cursor: pointer;
}
</style>
SvgIcon.vue.vue
<template>
<svg aria-hidden="true" :style="{ width: size + 'px', height: size + 'px' }">
<use :xlink:href="symbolId" :fill="color" />
</svg>
</template>
<script setup lang="ts">
import { computed } from 'vue';
const props = defineProps({
iconName: {
type: String,
required: true
},
color: {
type: String,
default: ''
},
size: {
type: [Number, String],
default: 20
}
})
const symbolId = computed(() => `#icon-${props.iconName}`);
</script>
<style scoped>
.svg-icon {
fill: currentColor;
vertical-align: middle;
}
</style>
使用案例index.vue
<script setup lang="ts" >
import breadCrumb from '@/components/breadCrumb.vue'
import { ref } from 'vue';
//面包屑
const item = ref({
first: '用户管理',
second:'用户管理员'
})
//显示哪个图标
const iconName = ref({
name: 'overview'
})
</script>
<template>
<div>
<breadCrumb :item="item" :iconName="iconName" />
</div>
</template>
<style scoped lang="scss"></style>
图片