news 2026/6/15 17:09:48

时间线 (步骤条)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
时间线 (步骤条)

效果如图

<!DOCTYPEhtml><html><head><meta charset="utf-8"><title></title><style>*{margin:0;padding:0;}body{width:100vw;height:100vh;overflow:hidden;display:flex;align-items:center;justify-content:center;gap:50px;}.time-box{width:300px;}.time{position:relative;box-sizing:border-box;padding:0010px 20px;}.time:before{position:absolute;left:0;top:5px;content:'';display:block;background-color:red;width:10px;height:10px;border-radius:10px;z-index:2;}.time.active:before{background:skyblue;}.time:not(:last-child)::after{position:absolute;left:5px;top:5px;content:'';display:block;background-color:#000;width:1px;height:100%;}.time.active:after{background:skyblue;}.time-box2{display:flex;width:500px;}.time2{position:relative;padding:20px 20px00px;}.time2:before{position:absolute;left:0;top:0;content:'';display:block;background-color:red;width:10px;height:10px;border-radius:10px;z-index:2;}.time2:not(:last-child)::after{position:absolute;left:0;top:5px;content:'';display:block;background-color:#000;width:100%;height:1px;}</style></head><body><divclass="time-box"><divclass="time active"><divclass="text">竖向 时间线</div></div><divclass="time"><divclass="text">时间线2</div><divclass="text">时间线2</div><divclass="text">时间线2</div><divclass="text">时间线2</div></div><divclass="time"><divclass="text">时间线3</div><divclass="text">时间线3</div><divclass="text">时间线3</div><divclass="text">时间线3</div></div><divclass="time"><divclass="text">时间线4</div><divclass="text">时间线4</div><divclass="text">时间线4</div><divclass="text">时间线4</div></div></div><divclass="time-box2"><divclass="time2"><divclass="text">横向 时间线</div></div><divclass="time2"><divclass="text">时间线2</div><divclass="text">时间线2</div><divclass="text">时间线2</div><divclass="text">时间线2</div></div><divclass="time2"><divclass="text">时间线3</div><divclass="text">时间线3</div><divclass="text">时间线3</div><divclass="text">时间线3</div></div><divclass="time2"><divclass="text">时间线4</div><divclass="text">时间线4</div><divclass="text">时间线4</div><divclass="text">时间线4</div></div></div></body></html>

你的这个时间线 Demo 非常适合用于教学博客!它通过纯 CSS 实现了竖向横向两种时间线布局,并巧妙地利用:before::after伪元素绘制连接线与节点,同时通过.active类实现了“激活状态”的视觉反馈——这正是步骤条(Step Progress)组件的核心思想。

下面我为你整理一份结构清晰、适合写进博客的教学解释文案,你可以直接使用或稍作修改:


🕒 纯 CSS 实现竖向 & 横向时间线(可拓展为步骤条)

在前端开发中,时间线(Timeline)步骤条(Step Progress)是常见的 UI 组件,常用于展示流程、历史事件或操作引导。今天,我们就用纯 HTML + CSS来实现一个简洁、可复用的时间线组件,并支持“激活项”高亮,轻松拓展为交互式步骤条!

🧱 核心思路

  • 利用伪元素::before绘制圆形节点(时间点)
  • 利用伪元素::after绘制连接线(时间轴)
  • 通过.active类控制当前步骤的样式(如颜色变化)
  • 分别实现竖向排列横向排列两种布局

🔽 竖向时间线实现

HTML 结构

<divclass="time-box"><divclass="time active">...</div><divclass="time">...</div><!-- 更多步骤 --></div>

关键 CSS 技巧

.time{position:relative;padding:20px 0 10px 20px;/* 左侧留出空间给时间轴 */}/* 圆形节点 */.time::before{content:'';position:absolute;left:0;top:5px;width:10px;height:10px;border-radius:50%;background-color:red;z-index:2;}/* 垂直线(时间轴) */.time::after{content:'';position:absolute;left:5px;top:5px;width:1px;height:100%;background-color:#000;}

💡注意.time::afterheight: 100%会延伸到每个.time元素的底部,从而形成连续的竖线。

激活状态(.active)

.time.active::before{background:skyblue;}.time.active::after{background:skyblue;}

这样,当前步骤的节点连接线都会高亮,视觉上更突出!


➡️ 横向时间线实现

HTML 结构

<divclass="time-box2"><!-- 使用 flex 横向排列 --><divclass="time2">...</div><divclass="time2">...</div></div>

关键差异

  • 容器.time-box2使用display: flex实现横向布局
  • 连接线从垂直变为水平
.time2::before{/* 节点位置:左上角 */left:5px;top:0;}.time2::after{/* 水平线:从节点向右延伸 */left:5px;top:5px;width:100%;/* 横向拉满 */height:1px;/* 变成细线 */background-color:#000;}

⚠️ 注意:横向时间线的连接线是每个.time2自己画的“右边部分”,所以最后一个元素的线可能会超出容器。实际项目中可通过:not(:last-child)::after优化。


🚀 拓展为交互式步骤条

你只需:

  1. 用 JavaScript 动态切换.active类(例如点击下一步)
  2. 添加过渡动画(如transition: background 0.3s
  3. 配合内容区域切换,即可实现完整的分步引导流程

示例逻辑(伪代码):

steps.forEach((step,index)=>{step.addEventListener('click',()=>{steps.forEach(s=>s.classList.remove('active'));step.classList.add('active');showContent(index);});});

✅ 总结

特性实现方式
时间节点::before+border-radius: 50%
时间轴线::after+ 宽/高控制方向
激活高亮.active类覆盖颜色
布局切换父容器用flex控制子项排列方向
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/15 14:42:14

深入理解 RabbitMQ 的AMQP 交换机类型与路由机制

文章目录一、Exchange 是什么&#xff1f;二、Direct Exchange&#xff08;直连交换机&#xff09;三、Fanout Exchange&#xff08;扇出广播交换机&#xff09;四、Topic Exchange&#xff08;主题交换机&#xff09;五、Headers Exchange&#xff08;头交换机&#xff09;六、…

作者头像 李华
网站建设 2026/6/15 15:50:29

主控STM32F407ZET6控制板PLC工控板FX3U,FX5U,控制IO卡 STM32F4...

主控STM32F407ZET6控制板PLC工控板FX3U,FX5U,控制IO卡 STM32F407ZET6工控板,包括pcb,原理图 ,/PLC STMF32F407ZET6/FX-3U/PCB生产方案&#xff0c;喜欢可直接联系。 不提供。 板载资源介绍 1. 8路高速脉冲加方向输出&#xff0c;带光耦隔离 2. 16路低速输出&#xff0c;加光耦和…

作者头像 李华
网站建设 2026/6/15 13:32:32

说说你对lambda表达式的理解

说说你对lambda表达式的理解 章节目录 文章目录说说你对lambda表达式的理解1. 什么是 Lambda 表达式&#xff1f;**Lambda表达式具有以下特点&#xff1a;****Lambda表达式的应用场景包括&#xff1a;**2. Lambda 表达式的语法是什么&#xff1f;3. Lambda 表达式和函数式接口…

作者头像 李华
网站建设 2026/6/15 13:35:06

【毕业设计】基于深度学习python-CNN卷积网络的动物是否疲劳识别基于python-CNN卷积网络的动物是否疲劳识别

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华
网站建设 2026/6/13 13:26:58

输入产品的定价与销量,分析价格弹性,生成创新的价格促销策略。

这是一个极具商业价值的项目构想。下面我将为你提供一个完整的、基于Python的“价格弹性分析与创新促销策略生成器”程序&#xff0c;并包含你要求的所有部分。1. 项目概述项目名称&#xff1a; PriceGenius - 价格弹性分析与创新促销策略生成器项目目标&#xff1a; 本程序旨在…

作者头像 李华
网站建设 2026/5/22 6:26:16

基于大数据Hadoop+机器学习预测算法+Echarts的用户信用评估系统的设计与实现(精品源码+精品论文+上万数据集+答辩PPT)

博主介绍&#xff1a;CSDN毕设辅导第一人、靠谱第一人、全网粉丝50W,csdn特邀作者、博客专家、腾讯云社区合作讲师、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交…

作者头像 李华