news 2026/4/15 11:20:05

时间线 (步骤条)

作者头像

张小明

前端开发工程师

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/15 10:50:29

编译时生成不为人知的5大陷阱,90%开发者都踩过坑

第一章&#xff1a;编译时代码生成的隐秘世界在现代软件工程中&#xff0c;编译时代码生成是一种被广泛采用但常被忽视的技术手段。它允许开发者在程序编译阶段自动生成重复性代码&#xff0c;从而减少手动编写的工作量&#xff0c;并提升代码的一致性和可维护性。这种技术广泛…

作者头像 李华
网站建设 2026/4/12 12:40:46

ue插件安装 Quixel Bridge

ue 虚幻引擎中&#xff0c;ue插件安装 Quixel Bridge&#xff0c;一次只能安装一个版本&#xff0c;从低到高&#xff0c;低版本安装完了&#xff0c;高版本就出来了。

作者头像 李华
网站建设 2026/4/15 10:48:56

Java 24发布后,你的代码还安全吗?立即检查这8个高危漏洞点

第一章&#xff1a;Java 24发布后安全形势全景透视Java 24的正式发布标志着语言在性能与现代化语法上的又一次飞跃&#xff0c;但同时也带来了新的安全挑战。随着新特性的引入&#xff0c;攻击面有所扩展&#xff0c;开发者需重新评估现有系统的安全边界。核心安全机制的演进 J…

作者头像 李华
网站建设 2026/4/15 10:48:41

[ros2-jazzy] sensor_msgs::PointCloud2 应用范例

以下是一个完整的ROS2 Jazzy C应用案例&#xff0c;包含PointCloud2的发布节点和订阅节点&#xff1a; 1. 发布节点 (point_cloud_publisher.cpp) #include <rclcpp/rclcpp.hpp> #include <sensor_msgs/msg/point_cloud2.hpp> #include <pcl/point_cloud.h> …

作者头像 李华
网站建设 2026/4/15 3:43:45

毕设分享 基于深度学习的人脸识别系统

文章目录前言机器学习-人脸识别过程人脸检测人脸对其人脸特征向量化人脸识别深度学习-人脸识别过程人脸检测人脸识别Metric Larning前言 人脸识别目前使用越来越广泛&#xff0c;很多同学希望能在自己毕设系统中用到人脸识别技术&#xff0c;希望学长能介绍一下人脸识别技术与…

作者头像 李华