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

复刻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.xdnf.cn/news/19635.html

相关文章:

  • 机器翻译:python库translatepy的详细使用(集成了多种翻译服务)
  • Redis 核心概念解析:从渐进式遍历、数据库管理到客户端通信协议
  • 自由学习记录(91)
  • C++“类吸血鬼幸存者”游戏制作的要点学习
  • 计算机毕设推荐:基于python的农产品价格数据分析与预测的可视化系统的设计与实现 基于Python农产品管理系统【源码+文档+调试】
  • 前后端联合实现多个文件上传
  • Java全栈开发面试实录:从基础到微服务架构的深度解析
  • Python 基础综合与实践教案:密码验证、循环、分支条件、图形绘制
  • ReconDreamer++
  • Polkadot - ELVES
  • 你的数据是如何被保护的?
  • 解决浏览器的**混合内容安全策略**(Mixed Content Security Policy)带来的无法访问页面
  • 联合体Union
  • Backroom:信息代币化 AI 时代数据冗杂的解决方案
  • 【系统分析师】高分论文:论原型法及其在系统开发中的应用
  • 【Proteus仿真】按键控制系列仿真——LED灯表示按键状态/按键控制LED灯/4*4矩阵键盘控制LED
  • 部署在windows的docker中的dify知识库存储位置
  • NMOS概述
  • python---类.函数名(self) 和 self.函数名()的调用方式
  • 数据结构 二叉树
  • RocketMQ5.0+保姆级单点Docker部署教程
  • 暴力破解基础知识(一)
  • 深入解析 Oracle 并发与锁机制:高并发环境下的数据一致性之道
  • 【数论】P10558 [ICPC 2024 Xi‘an I] XOR Game|普及+
  • 深度学习导论:从理论起源到前沿应用与挑战
  • Halcon学习--(1)常用算子
  • 大模型RAG项目实战:向量数据库Faiss
  • 蓓韵安禧活性叶酸源于上市企业生产
  • 手写MyBatis第44弹:解密MyBatis四大核心组件拦截之道
  • 【influxdb】InfluxDB 2.x 线性写入详解