当前位置: 首页 > news >正文

复刻elementUI的步骤条Steps

摘要:UI小姐姐设计了步骤条,跟饿了么样式差距比较大,不想一层层改样式决定复刻一个steps步骤条组件。

最终展示如图:

在这里插入图片描述

实现布局

简单的布局不再赘述,主要考虑到步骤数量sList是可变的,每个步骤之间要一个虚线连接起来,调整页面大小的时候虚线也要动态伸缩。

1、首先简单的使用ul>li flex实现静态页面

  <ul class="outer-box flex"><li class="flex" :class="{ active: activeIdx >= index }" v-for="(item, index) in sList" :key="index"><div v-if="activeIdx <= index" class="serialNum flex">{{ index + 1 }}</div><i v-else class="el-icon-success"></i><div class="info">{{ item}}</div></li></ul>// style.flex {display: flex;align-items: center;justify-content: center;
}
.outer-box {height: 88px;background: #f0f6ff;padding: 0px 100px;margin: 0 auto;margin-bottom: 30px;.el-icon-success {font-size: 28px;color: #165dff;margin-right: 12px;}}

2、然后通过伪元素 ::after 实现步骤之间的虚线

  li {&::after {content: '';display: block;width: 200px;  // 当前虚线的宽度是固定的height: 0px;border: 1px dashed #848cac;margin: 0 40px;}&:last-child {&::after {content: '';display: block;flex: none;border: 0;width: 0;margin: 0;}}

3、通过.active 样式将已完成的步骤改变样式

  .active {.serialNum {// ...}.desc {// ...}}

4、应用 flex属性flex-basis、flex-shrink、flex-grow实现动态布局

  • flex-basis 分配多余空间之前,项目占据的主轴空间,浏览器根据这个属性,计算主轴是否有多余空间

默认值是auto ➡ 即项目本来大小
它可以设为跟width或height属性一样的值(比如350px),则项目将占据固定空间

  • flex-grow 定义项目的放大比例,默认为0 ,即如果剩余空间,也不放大

如果所有项目的flex-grow属性都为1,则它们将等分剩余空间(如果有的话)。如果一个项目的flex-grow属性为2,其他项目都为1,则前者占据的剩余空间将比其他项多一倍。

  • flex-shrink 属性定义了项目的缩小比例,默认为1,即如果空间不足,该项目将缩小

如果所有项目的flex-shrink属性都为1,当空间不足时,都将等比例缩小。如果一个项目的flex-shrink属性为0,其他项目都为1,则空间不足时,前者0不缩小。

li {flex-basis: 50%;&::after {content: '';display: block;//width: 200px;flex: 1;        // 步骤之间的虚线宽度可伸缩height: 0px;border: 1px dashed #848cac;margin: 0 40px;}&:last-child { flex-shrink: 0;flex-grow: 0;flex-basis: auto !important; // 最后一个步骤不伸缩,宽度为固定的自身的宽度&::after {content: '';display: block;flex: none;border: 0;width: 0;margin: 0;}}}
http://www.dtcms.com/a/361716.html

相关文章:

  • 【架构师干货】系统架构设计
  • Pytorch的CUDA版本安装使用教程
  • XGBoost学习笔记
  • docker 数据管理
  • 徐州服务器:机柜租用具体包含哪些内容?
  • 『Java』把Java项目打成Jar包,并引用项目外的Jar依赖
  • Spring Boot 常用注解有哪些?
  • 【MySQL】进阶技术详解
  • 机器学习-时序预测2
  • uniapp使用uview UI,自定义级联选择组件
  • 正则表达式与grep文本过滤详解
  • 盲盒抽谷机小程序开发:如何用3D技术重构沉浸式体验?
  • 【Proteus仿真】8*8LED点阵控制系列仿真——循环显示数字/按键控制显示图案
  • 虚拟机- + linux
  • UFUNCTION C++ 的再次理解
  • 凸集与优化
  • Python OpenCV图像处理与深度学习:Python OpenCV视频处理入门
  • C++实时视频抽帧抓图功能(附源码)
  • DeepSeek-V3.1 模型 API 新特性拆解:逆向 + 火山双渠道适配与推理模式智能切换指南
  • 基于FPGA的红外与可见光图像融合算法
  • Day42 Grad-CAM与Hook函数
  • 进程与线程 - 并发的基石
  • SQL执行过程及原理详解
  • [SWPUCTF 2018]SimplePHP
  • 实现自己的AI视频监控系统-第三章-信息的推送与共享2
  • 刘洋洋《一笔相思绘红妆》上线,献给当代痴心人的一封情书
  • 互斥量(Mutex,全称 Mutual Exclusion)用于保证同一时间只有一个线程(或进程)访问共享资源,从而避免并发操作导致的数据不一致问题
  • RAG-文本到SQL
  • SOME/IP-SD中IPv4端点选项与IPv4 SD端点选项
  • 突破超强回归模型,高斯过程回归!