You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用HTML/CSS/JavaScript实现类似在线订单的进度状态栏效果

不需要用自定义样式的radio,你现在的伪元素实现方案已经是最简洁的,只要修改CSS伪元素的样式就能实现目标效果,比额外引入radio再重置默认样式要省事得多。

你只需要对现有CSS做以下几处调整即可:

  1. 给已完成的步骤节点加绿色背景、白色文字
  2. 如果需要当前进行中的步骤有中心实心点的效果,可以针对最后一个激活节点加特殊样式,用径向渐变就能实现
  3. 调整连接线的激活逻辑,确保已完成步骤之间的连接线全为绿色

修改后的完整CSS示例:

.container {
  width: 800px;
  margin: 100px auto;
}

.progressbar {
  counter-reset: step;
  padding: 0; /* 清除ul默认内边距 */
}

.progressbar li {
  list-style-type: none;
  width: 16.6666%;
  float: left;
  font-size: 12px;
  position: relative;
  text-align: center;
  text-transform: uppercase;
  color: #7d7d7d;
}

.progressbar li:before {
  width: 30px;
  height: 30px;
  content: counter(step);
  counter-increment: step;
  line-height: 30px;
  border: 2px solid #7d7d7d;
  display: block;
  text-align: center;
  margin: 0 auto 10px auto;
  border-radius: 50%;
  background-color: white;
  transition: all 0.3s ease;
}

.progressbar li:after {
  width: 100%;
  height: 2px;
  content: "";
  position: absolute;
  background-color: #7d7d7d;
  top: 15px;
  left: -50%;
  z-index: -1;
  transition: all 0.3s ease;
}

.progressbar li:first-child:after {
  content: none;
}

/* 已完成步骤样式 */
.progressbar li.active {
  color: #55b776;
}
.progressbar li.active:before {
  border-color: #55b776;
  background-color: #55b776;
  color: #fff;
}
/* 已完成步骤之间的连接线设为绿色 */
.progressbar li.active:after {
  background-color: #55b776;
}

/* 当前进行中步骤(最后一个active节点)的特殊样式 */
.progressbar li.active:last-child:before {
  background-color: #fff;
  color: #55b776;
  /* 用径向渐变实现中心实心绿点 */
  background-image: radial-gradient(circle, #55b776 40%, transparent 40%);
}

你不需要修改原有DOM结构,只需要根据进度给对应节点加active类即可,比用radio的方案少了很多冗余代码,维护起来也更方便。

内容的提问来源于stack exchange,提问作者bart cubrich

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 11:45:05