news 2026/4/18 0:43:44

时间线 (步骤条)

作者头像

张小明

前端开发工程师

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/4/18 3:33:53

深入Java 24安全机制:5个你从未注意但至关重要的编码细节

第一章&#xff1a;Java 24安全机制概述 Java 24在延续Java平台强大安全性基础的同时&#xff0c;进一步增强了语言和运行时的安全防护能力。该版本聚焦于减少潜在攻击面、提升默认安全配置&#xff0c;并引入更严格的权限控制机制&#xff0c;以应对现代应用面临的复杂安全挑战…

作者头像 李华
网站建设 2026/4/17 19:36:06

Node.js用Set高效去重数组

&#x1f493; 博客主页&#xff1a;瑕疵的CSDN主页 &#x1f4dd; Gitee主页&#xff1a;瑕疵的gitee主页 ⏩ 文章专栏&#xff1a;《热点资讯》 Node.js高效数组去重&#xff1a;Set的原理、实践与性能优化目录Node.js高效数组去重&#xff1a;Set的原理、实践与性能优化 引…

作者头像 李华
网站建设 2026/4/17 5:21:56

深入理解不安全类型内存操作(从指针滥用到缓冲区溢出全解析)

第一章&#xff1a;不安全类型内存操作概述在系统级编程中&#xff0c;不安全类型内存操作是绕过语言默认内存安全机制的底层手段&#xff0c;常用于性能优化、硬件交互或实现特定数据结构。这类操作允许直接读写内存地址&#xff0c;但同时也承担着引发段错误、内存泄漏或安全…

作者头像 李华
网站建设 2026/4/17 15:16:47

错过将被淘汰!动态形状推理正在重塑AI推理生态

第一章&#xff1a;错过将被淘汰&#xff01;动态形状推理正在重塑AI推理生态在人工智能模型部署日益复杂的今天&#xff0c;静态形状推理的局限性正成为性能瓶颈。传统推理框架要求输入张量的维度在编译时完全确定&#xff0c;这在面对图像、语音或自然语言处理中变长输入时显…

作者头像 李华
网站建设 2026/4/17 16:00:00

计算机专业就业全指南:主流方向解析 + 网络安全黄金赛道突围技巧

计算机专业就业全指南&#xff1a;主流方向解析 网络安全黄金赛道突围技巧 在数字化浪潮的推动下&#xff0c;计算机专业长期稳居就业热门榜单前列。但随着行业细分加剧&#xff0c;不少计算机专业学生和转行从业者陷入 “方向迷茫”—— 不知道哪些方向前景好、哪些岗位适合…

作者头像 李华