效果展示(后台管理系统中常用)


如果你也需要如图所示的效果 直接把下面的代码粘贴过去即可
不需要父组件传递任何参数 十分好用;

基本思路:
监听 $route 路由信息;
把当前的信息添加至数组,循环遍历数组
当前的active样式, 也是根据 当前的$route 里的path去决定的

代码写的很清楚了:

Tag

<template><div class="tag" v-if="showTags"><ul><li class="tags-li" v-for="(item,index) in list" :class="{'active': isActive(item.path)}" :key="index"><!--点击每个小按钮跳转相应路由--><router-link :to="item.path" class="tags-li-title">{{item.title}}</router-link><span class="tags-li-icon" @click="closeTags(index)"><i class="el-icon-close"></i></span></li></ul><div class="handleTags"><el-dropdown @command="handleTags" size="mini" type="primary"><el-button type="primary">标签选项<i class="el-icon-arrow-down el-icon--right"></i></el-button><el-dropdown-menu slot="dropdown"><el-dropdown-item command="all">关闭所有</el-dropdown-item><el-dropdown-item command="other">关闭其他</el-dropdown-item></el-dropdown-menu></el-dropdown></div></div>
</template><script>export default {name: "Tag",data() {return {list: []}},computed: {// 显示隐藏面包屑showTags() {return this.list.length > 0;}},watch: {// 通过 监听路由的变化$route(newValue, oldValue) {this.setTages(newValue)}},methods: {// 选中状态  返回 true falseisActive(path) {return path === this.$route.fullPath;},// 标签选项 关闭单个 关闭所有handleTags(command) {command === 'all' ? this.closeAll() : this.closeOther()},// 点击关闭  单个 按钮closeTags(index) {const delItem = this.list.splice(index, 1)[0]; // 获取当前的const item = this.list[index] ? this.list[index] : this.list[index - 1]; // 获取到下一个if (item) { // 有下一个  跳到下一个delItem.path === this.$route.fullPath && this.$router.push(item.path);} else {  // 没有 去 home页面this.$router.push('/Home');}},// 点击关闭 所有closeAll() {this.list = [];this.$router.push('/Home');},// 点击关闭其他closeOther() {let currentList = this.list.filter((ele) => {return ele.path === this.$route.fullPath});this.list = currentList},// 展示的数组setTages(newValue) {const isExist = this.list.some(item => {return item.path === newValue.fullPath;});if (!isExist) {if (this.list.length >= 8) {this.list.shift();}this.list.push({title: newValue.meta.title,path: newValue.path,name: newValue.matched[1].components.default.name})}}}}
</script><style scoped lang="scss">.handleTags > > > .el-button {padding: 7px 0;font-size: 12px;}.tag {width: 100%;display: flex;justify-content: space-between;align-items: center;}.tags {position: relative;height: 30px;overflow: hidden;background: #fff;padding-right: 120px;box-shadow: 0 5px 10px #ddd;}.tags ul {box-sizing: border-box;width: 100%;height: 100%;}.tags-li {float: left;margin: 3px 5px 2px 3px;border-radius: 3px;font-size: 12px;overflow: hidden;cursor: pointer;height: 23px;line-height: 23px;border: 1px solid #e9eaec;background: skyblue;padding: 0 5px 0 12px;vertical-align: middle;color: #666;-webkit-transition: all .3s ease-in;-moz-transition: all .3s ease-in;transition: all .3s ease-in;}.tags-li:not(.active):hover {background: #f8f8f8;}.tags-li.active {color: #fff;}.tags-li-title {float: left;max-width: 80px;overflow: hidden;white-space: nowrap;text-overflow: ellipsis;margin-right: 5px;color: #666;}.tags-li.active .tags-li-title {color: #fff;}.tags-close-box {position: absolute;right: 0;top: 0;box-sizing: border-box;padding-top: 1px;text-align: center;width: 110px;height: 30px;background: #fff;box-shadow: -3px 0 15px 3px rgba(0, 0, 0, .1);z-index: 10;}</style>

在父组件中引入配置即可使用

Vue 封装面包屑 (即粘即用)相关推荐

  1. 在vue中使用element-ui二次封装面包屑导条

    在vue中使用element-ui二次封装面包屑导条 由于这几天写了一个后台管理系统,多次使用的到了面包屑导航,所以我就把它封装起来使用了: 效果图 第一步 安装element-ui npm i el ...

  2. vue实战-面包屑的处理

    vue实战-面包屑的处理 1.面包屑处理分类操作 在Search路由模块下 通过v-if来确定面包屑的存在,设置点击事件处理删除面包屑后的情况 <ul class="fl sui-ta ...

  3. 组件封装 - 面包屑组件

    我们主要分为三个部分: 1. 初级的面包屑 2. 高阶的面包屑(过渡) 3. 高阶的面包屑(终极) 现在就来封装一个最简易的面包屑组件 简易面包屑只能兼容两级, 如果说有两级以上的; 这样的面包屑组件 ...

  4. vue 中面包屑带跳转的做法

    首先要在子页面的meta中定义 {path: '/staffsManagement',component: () => import(/* webpackChunkName: "das ...

  5. vue动态面包屑导航

    说明:根据不同的页面动态生成不同的面包屑导航 (不用在每个页面写死面包屑) router.js路由文件: {path:'/index',name:'index',component:()=>im ...

  6. Vue动态面包屑功能的实现方法

    面包屑应该是我们在项目中经常使用的一个功能,一般情况下它用来表示我们当前所处的站点位置,也可以帮助我们能够更快的回到上个层级. 今天我们就来聊聊如何在 Vue 的项目中实现面包屑功能.以下案例都是使用 ...

  7. vue动态面包屑导航的使用

    动态面包屑导航是根据路由中的 matched 获取到的 单独提取出面包屑导航栏组件 <template><el-breadcrumb class="app-breadcru ...

  8. vue--echarts 图标库、excel导出、面包屑组件、富文本框、地图、前端使用代理访问、监控生产环境or开发环境

    目录 一.echarts 图标库 1.echarts的基础 2.项目中的使用 二.execl导出 三.面包屑组件 四.富文本框 五.地图 六.vite 构建配置 七.后端未开跨域资源共享,前端使用代理 ...

  9. vue3 - 仿 element-ui Breadcrumb 面包屑组件封装自己的面包屑组件

    仿 element-ui Breadcrumb 面包屑组件封装自己的面包屑组件 element-ui 面包屑结构 <el-breadcrumb separator="/"&g ...

最新文章

  1. Python中线程Timeout的使用
  2. Asp.NET 获取网站根目录
  3. spring boot / cloud (二) 规范响应格式以及统一异常处理
  4. UI基础视图----UIImageView总结
  5. 关于用Delphi开发的一些基本的套路
  6. Linux和Windows下部署BeetleX服务网关
  7. ubuntu16.04下载caffe(CPU版本)及部分文件说明
  8. 大数据面试-02-大数据工程师面试题
  9. 【译】BMP格式与JPG格式之间的区别
  10. java无法启动安装程序,Windows Fix中无法启动Java更新安装程序错误
  11. Origin2018安装与使用(整理中)
  12. 奥维 html api,【教程】在奥维中,个人如何申请天地图API秘钥(手机端操作)
  13. 克利夫顿优势识别器 Clifton Strengths
  14. iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 3306 -j DNAT --to-destinatio
  15. 用Auto.js批量删除空间说说
  16. 子比Zibll主题V6.3最新亲测免授权+可用版
  17. typescript 之 keyof
  18. Powershell 5.1中Shift + Insert无法粘贴解决
  19. def文件的作用及相关操作
  20. 软件设计师考试(2018下半年)

热门文章

  1. 完美图解教程 Linux环境VNC服务安装、配置与使用
  2. Spark RDD创建操作
  3. Facebook 开源了一整套重要的 Linux 内核组件与工具!
  4. JavaWeb学习总结(十二):Session
  5. python requests用法总结
  6. HTTP 错误 500.19 - Internal Server Error 无法访问请求的页面,因为该页的相关配置数据无效。...
  7. CentOS6部署phpmyadmin;部署Discuz;部署phpwind;部署phpBB
  8. 弗拉明戈舞_百度百科
  9. Android注册BroadcastReceiver的两种办法及其区别
  10. 重载session存储方式–session_set_save_handler()