< elementUI组件样式及功能补全: 实现点击steps组件跳转对应步骤 >

news2024/11/29 4:27:50

文章目录

  • 👉 前言
  • 👉 一、效果演示
  • 👉 二、点击steps跳转效果实现
  • 👉 三、实现案例
  • 往期内容 💨


👉 前言

在 Vue + elementUi 开发中,elementUI中steps步骤条组件只提供了change方法,并未提供各个步骤的点击跳转方法。在实际项目使用中,如果步骤条并非一步一步进行,而是有步骤跳转。那么就需要自己去自定义DIY了。

接下来,简单阐述下,开发中使用方法!


👉 一、效果演示

话不多说,先上效果图! 白嫖万岁!当然,如果有帮助,希望不要吝啬你的点赞呀!

在这里插入图片描述

👉 二、点击steps跳转效果实现

通过为 el-step 添加 @click.native 属性,拦截标签原生点击事件!

注意:在vue3中 ‘.native’ 修饰符在vue3中被弃用了,
解决方法:把 ‘.native’ 换成 ‘.enter’

👉 三、实现案例

> HTML模板

<template>
<div class="stepBox">
  <div :class="'step-line' + (stepStatuList['开展整改'] ? ' isSuccess' : '')"></div>
  <span :class="'el-icon-caret-top point num_'+ active"></span>
   <el-steps
	:active="active"
	align-center
	finish-status="success"
	@change="stepChange"
	>
	 <el-step
	   title="开展核实"
	   :status="active == 0 ? 'success' : stepStatuList['开展核实'] ? 'process' : 'wait'"
	   @click.native="stepStatuList['开展核实'] ? stepClick(0) : () => {}"
	   :style="{cursor: (stepStatuList['开展核实'] ? 'pointer' : 'not-allowed')}"
	 ></el-step>
	 <el-step
	   title="核实审核"
	   :status="active == 1 ? 'success' : stepStatuList['核实审核'] ? 'process' : 'wait'"
	   @click.native="stepStatuList['核实审核'] ? stepClick(1) : () => {}"
	   :style="{cursor: (stepStatuList['核实审核'] ? 'pointer' : 'not-allowed')}"
	 ></el-step>
	 <el-step
	   title="开展整改"
	   :status="active == 2 ? 'success' : stepStatuList['开展整改'] ? 'process' : 'wait'"
	   @click.native="stepStatuList['开展整改'] ? stepClick(2) : () => {}"
	   :style="{cursor: (stepStatuList['开展整改'] ? 'pointer' : 'not-allowed')}"
	 ></el-step>
	 <el-step
	   title="整改审核"
	   :status="active == 3 ? 'success' : stepStatuList['整改审核'] ? 'process' : 'wait'"
	   @click.native="stepStatuList['整改审核'] ? stepClick(3) : () => {}"
	   :style="{cursor: (stepStatuList['整改审核'] ? 'pointer' : 'not-allowed')}"
	 ></el-step>
	</el-steps>
 </div>
</template>

> Js模板

stepClick(step) {
	this.active = step
	// this.stepChange(step)
},
// 步骤切换
stepChange(step) {
  this.multipleSelection = []
  this.toggleSelection([])
  this.$refs['params'].resetFields();
  this.$router.push({
      query:merge(this.$route.query,{'active':step})
  })
  this.getStepById()
  // if(step == 1) {
  //   this.detailListType = '-1'
  // } else {
  //   this.detailListType = '0'
  // }
  this.detailListType = '0'
  this.getColumnArray(() => {
    if((step === 0 || step === 2) && this.tableData.length === 0) {
      this.detailListType = '1'
      this.getColumnArray()
    }
  })
},

> CSS 模板

.stepBox {
	width: 80%;
	padding: 25px 0 15px;
	margin: 0 auto 0;
	position: relative;
	// border-top: 2px solid #a2dcff;
	// border-bottom: 2px solid #a2dcff;
	.point{
	  color: #4298f3!important;
	  font-size: 30px;
	  position: absolute;
	  top: 50px;
	}
	.point.num_0 {
	  left: calc(100%/8 - 10px);
	}
	.point.num_1 {
	  left: calc(100%/8*3 - 10px);
	}
	.point.num_2 {
	  left: calc(100%/8*5 - 10px);
	}
	.point.num_3 {
	  left: calc(100%/8*7 - 10px);
	}
	.point.num_4 {
	  display: none;
	}
	.step-line {
	  width: calc(50% - 5px);
	  height: 30px;
	  position: absolute;
	  left: calc(100%/8);
	  top: -15px;
	  border: 2px solid #b3b3b3;
	  border-bottom: 0;
	  &::after {
	    content: '>>';
	    color: #b3b3b3;
	    background: #fff;
	    position: absolute;
	    top: 10px;
	    right: -16.5px;
	    font-size: 18px;
	    font-weight: bold;
	    transform: rotate(90deg);
	  }
	}
	.step-line.isSuccess {
	  border: 2px solid #4298f3;
	  border-bottom: 0;
	  &::after {
	    content: '>>';
	    color: #4298f3;
	    background: #fff;
	    position: absolute;
	    top: 10px;
	    right: -16.5px;
	    font-size: 18px;
	    font-weight: bold;
	    transform: rotate(90deg);
	  }
	}
}

/* 用于覆盖element的原样式 */
/deep/ {
.el-steps {
  display: flex;
  justify-content: center;
  position: relative;
  transition: all .4s;
  >div {
    &:nth-child(2) {
      .el-step__line {
        display: none;
      }
    }
  }
  .el-step__main {
    position: absolute;
    top: -28%;
    left: 45%;
    z-index: 20;
    .el-step__title {
      font-family: MicrosoftYaHei;
      font-size: 13px;
      color: #c1e6f3;
      text-align: center;
      font-weight: 600;
    }
    .el-step__title.is-success {
      color: #fff;
    }
    .el-step__title.is-wait {
      color: #fff;
    }
    .el-step__title.is-process {
      font-family: MicrosoftYaHei;
      font-size: 13.5px;
      color: #4298f3;
      text-align: center;
      font-weight: bold;
    }
  }
  .el-step__head.is-success {
    >.el-step__line {
      width: calc(100%);
      // position: relative;
      background: #4298f3;
      // &::after {
      //   content: '>>';
      //   color: #4298f3;
      //   position: absolute;
      //   top: -9px;
      //   right: -28px;
      //   font-size: 17px;
      //   font-weight: bold;
      // }
    }
  }
  .el-step__icon is-text {
    
  }
  .el-step__line {
    width: calc(40%)!important;
    margin-left: calc(25% + 20px);
    height: 1.5px;
    z-index: 5;
    >.el-step__line-inner {
      display: none;
    }
  }
  .el-step__head.is-wait,
  .el-step__head.is-process
  {
    >.el-step__line {
      width: calc(100%);
      // position: relative;
      background: #b3b3b3;
      // &::after {
      //   content: '>>';
      //   color: #b3b3b3;
      //   position: absolute;
      //   top: -9px;
      //   right: -28px;
      //   font-size: 17px;
      //   font-weight: bold;
      // }
    }
  }
  .el-step__icon-inner {
    display: block;
    position: absolute;
    left: 20px;
  }
  .el-step__head.is-process {
    .el-step__icon-inner {
      color: #4298f3;
    }
  }
  .el-step__head.is-wait {
    .el-step__icon-inner {
      color: #fff;
    }
  }
  .el-step__head.is-process {
    .el-step__icon.is-text {
      background-color: #fff;
      width: 60%;
      border-radius: 0;
      position: relative;
      text-align: left;
      &::after {
        content: "";
        position: absolute;
        right: -9.8px;
        width: 15px;
        height: 15px;
        background-color: #fff; /* 模块背景为透明 */
        border-color: #4298f3;
        border-style: solid;
        border-width: 2.2px 2.2px 0 0;
        margin: 300px auto;
        transform: rotate(45deg); /*箭头方向可以自由切换角度*/
      }
      &::before {
        content: "";
        position: absolute;
        left: -10.5px;
        width: 15px;
        height: 15px;
        background-color: #fff; /* 模块背景为透明 */
        border-color: #4298f3;
        border-style: solid;
        border-width: 2.2px 2.2px 0 0;
        border-radius: 2px;
        margin: 300px auto;
        transform: rotate(45deg); /*箭头方向可以自由切换角度*/
      }
    }
  }
  .el-step__head.is-success{
    .el-step__icon.is-text {
      background-color: #4298f3;
      width: 60%;
      border-radius: 0;
      position: relative;
      text-align: left;
      &::after {
        content: "";
        position: absolute;
        right: -10.8px;
        width: 17px;
        height: 17px;
        background-color: #4298f3; /* 模块背景为透明 */
        margin: 300px auto;
        transform: rotate(45deg); /*箭头方向可以自由切换角度*/
      }
      &::before {
        content: "";
        position: absolute;
        left: -10.5px;
        width: 17px;
        height: 17px;
        background-color: #fff; /* 模块背景为透明 */
        margin: 300px auto;
        transform: rotate(45deg); /*箭头方向可以自由切换角度*/
      }
    }
  }
  .el-step__head.is-wait {
    .el-step__icon.is-text {
      background-color: #b3b3b3;
      width: 60%;
      border-radius: 0;
      position: relative;
      text-align: left;
      &::after {
        content: "";
        position: absolute;
        right: -10.8px;
        width: 17px;
        height: 17px;
        background-color: #b3b3b3; /* 模块背景为透明 */
        margin: 300px auto;
        transform: rotate(45deg); /*箭头方向可以自由切换角度*/
      }
      &::before {
        content: "";
        position: absolute;
        left: -10.5px;
        width: 17px;
        height: 17px;
        background-color: #fff; /* 模块背景为透明 */
        margin: 300px auto;
        transform: rotate(45deg); /*箭头方向可以自由切换角度*/
      }
    }
  }
  .el-step__head.is-success,
  .el-step__head.is-process {
    color: #fff;
    border-color: #4298f3;
    // background: #4298f3;
  }
}
}

案例较为粗浅,仅供参考!


往期内容 💨

🔥 < CSDN周赛解析:第 28 期 >

🔥 < elementUi 组件插件: el-table表格拖拽修改列宽及行高 及 使用注意事项 >

🔥 < 每日小技巧:N个很棒的 Vue 开发技巧, 持续记录ing >

🔥 < CSDN周赛解析:第 27 期 >

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/367487.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Database-03】从 MySQL 迁移到 达梦数据库(DM 8)

1、环境 源数据库 MySQL 8.30 目标数据库 DM 8 操作系统 Centos 9 Steam 迁移工具 DM 数据迁移工具 (DM DTS) 2、开始迁移 2.1、打开DM数据迁移工具 在新建工程对话框中填写工程名和工程描述信息&#xff0c;点击【确定】按钮&#xff0c;成功添加了一个工程。 2.2、新建迁…

海思SD3403/SS928V100开发(5)MIPI_YUV相机vio sample开发----修改思路

1. 前言 sensor输出格式: YUV422 8bit 硬件连接: MIPI_YUV相机(4lane MIPI) -> SS928V100 MIPI0(4lane) 框图: 2. 几个问题 基于SS928 SDK中的 vio sample修改; 但是sample里面都是基于RAW RGB sensor开发的sample, 没有现成的MIPI_YUV sensor的参考,需要自己…

[黑马程序员SSM框架教程] Spring-11-setter注入

思考&#xff1a;向一个类中传递数据要几种&#xff1f; set方法构造方法 思考&#xff1a;依赖注入描述了在容器中建立bean与bean之间依赖关系的过程&#xff0c;如果bean运行需要数字或字符呢 引用类型简单类型&#xff08;基本数据类型和字符串&#xff09; 注入方式&#x…

软考学习笔记(题目知识记录) 2023.2.24

答案为 概要设计阶段 本题涉及软件工程的概念 软件工程的任务是基于需求分析的结果建立各种设计模型&#xff0c;给出问题的解决方案 软件设计可以分为两个阶段&#xff1a; 概要设计阶段和详细设计阶段 结构化设计方法中&#xff0c;概要设计阶段进行软件体系结构的设计&…

webpack基础学习,各个loader和plugin的具体配置

一、邂逅Webpack Webpack是什么 webpack是一个静态的模块化打包工具&#xff0c;为现代的JavaScript应用程序&#xff1b; 打包bundler&#xff1a;webpack可以将帮助我们进行打包&#xff0c;所以它是一个打包工具 静态的static&#xff1a;这样表述的原因是我们最终可以将…

(三十)大白话MySQL的redo log buffer中的缓冲日志,到底什么时候可以写入磁盘?

之前我们给大家讲解了一下redo log buffer的缓冲机制&#xff0c;大家现在应该都知道了&#xff0c;redo log在写的时候&#xff0c;都是一个事务里的一组redo log&#xff0c;先暂存在一个地方&#xff0c;完事儿了以后把一组redo log写入redo log buffer。 写入redo log buf…

C++ 动态内存管理

目录 1. C/C内存分布 练习 2. C语言中动态内存管理方式&#xff1a;malloc/calloc/realloc/free 3. C内存管理方式 3.1 new/delete操作内置类型 3.2 new和delete操作自定义类型 4. operator new与operator delete函数 4.1 operator new与operator delete函数&#xff08…

跨境多账号管理教程分享:解决多账号管理混乱问题

如今&#xff0c;跨境电商卖家拥有多平台多账号已经成为常态&#xff0c;但很多人找东哥咨询的担忧都是要如何有效地管理这么多账号&#xff0c;因为如果账号过多&#xff0c;容易被关联&#xff0c;进而影响账号安全。如果你也刚好有这个烦恼&#xff0c;那找东哥真的就是找对…

HEVC 编码速率控制

视频传输带宽通常都会受到一定的限制&#xff0c;为了在满足通信带宽和传输时延限制的情况下有效传输视频数据&#xff0c;保证视频业务的播放质量&#xff0c;需要对视频编码过程进行速率控制&#xff0c;所谓速率控制&#xff0c;就是通过选择一系列编码失真尽量小&#xff0…

「TCG 规范解读」初识 TPM 2.0 库续三

可信计算组织&#xff08;Ttrusted Computing Group,TCG&#xff09;是一个非盈利的工业标准组织&#xff0c;它的宗旨是加强在相异计算机平台上的计算环境的安全性。TCG于2003年春成立&#xff0c;并采纳了由可信计算平台联盟&#xff08;the Trusted Computing Platform Alli…

导航定位状态评估专题:“特征”离群点判断与剔除 | 定位状态完整性监控

1、前言&#xff1a;经典状态估计中协方差的计算能准确反映机器人状态的完整性吗&#xff1f;在每一次机器人执行各种目的的自动导航任务时&#xff0c;拥有高精度且可靠状态估计的能力可以说是机器人顺利、安全完成任务的必要条件之一。简而言之&#xff0c;机器人状态估计算法…

Docker Compose

为什么需要使用Docker ComposeDocker Compose 容器编排技术1、现在我们有一个springboot项目&#xff0c;需要依赖Redis、mysql、nginx。如果使用docker原生部署的话&#xff0c;则需要安装Redis、mysql、nginx容器&#xff0c;才可以启动我们springboot项目&#xff0c;这样的…

Flink-CEP理论与实践

一.什么是Flink cepCEP 是复杂事件处理&#xff08;Complex Event Processing&#xff09;的缩写&#xff0c;是一种处理实时数据流的技术。它可以在大规模数据流中实时识别出与预定义的模式匹配的事件&#xff0c;并在匹配到事件时采取相应的措施。CEP 技术的应用范围非常广泛…

Web前端:为什么要雇佣全栈开发人员

全栈开发人员是任何软件开发项目的宝贵专家。但是&#xff0c;在某些情况下&#xff0c;它们是企业最需要的。雇佣一名全栈开发人员来监督你的项目&#xff0c;从构思到启动&#xff0c;再到以后&#xff0c;有无数的好处。1.出色的web/应用程序开发人员全栈web开发人员有经验&…

CSS3实现文字循环滚动播放

CSS3实现文字循环滚动播放 效果图&#xff1a; 代码&#xff1a; <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name&q…

【微信小程序】-- 常用视图容器类组件介绍 -- view、scroll-view和swiper(六)

&#x1f48c; 所属专栏&#xff1a;【微信小程序开发教程】 &#x1f600; 作  者&#xff1a;我是夜阑的狗&#x1f436; &#x1f680; 个人简介&#xff1a;一个正在努力学技术的CV工程师&#xff0c;专注基础和实战分享 &#xff0c;欢迎咨询&#xff01; &#…

分布式爬虫的介绍和搭建

分布式爬虫 Scrapy单机模式 Scrapy引擎通过一调度器&#xff0c;将request队列中的 request请求发给下载器进行页面的爬取 Scrapy单机框架的优缺点 优点&#xff1a; 部署容易&#xff0c;架构简单快速&#xff0c;快速部署 缺点&#xff1a; 单点执行&#xff0c;抓取…

假脱机技术Spooling和守护进程

文章目录假脱机系统Spooling和守护进程1.假脱机技术的引入2.SPOOling系统的组成3.SPOOling系统的工作过程守护进程假脱机系统Spooling和守护进程 1.假脱机技术的引入 脱机技术&#xff1a; 为了缓和CPU的高速性与IO设备的低速性间的矛盾&#xff0c;而引入了脱机输入&#xf…

Objective-C 中类和对象的基本使用 方法的调用(消息传递)

总目录 iOS开发笔记目录 从一无所知到入门 文章目录Intro截图自定义类型的interface部分和implementation部分main方法中的类型调用部分Demo测试代码输出Intro Objective-C&#xff0c;具有面向对象特性的C。 但其实&#xff0c;它的面向对象和其他高级语言相比&#xff0c;还…

【C++】C++的内存模型之四大分区

程序的内存模型 C程序在执行时&#xff0c;将内存大方向划分为4个区域 代码区&#xff1a;存放函数体的二进制代码&#xff0c;由操作系统进行管理的全局区&#xff1a;存放全局变量和静态变量以及常量栈区&#xff1a;由编译器自动分配释放&#xff0c;存放函数的参数值&…