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

求助:实现等级系统中左右等级+中间进度条的布局

问题描述

开发个人资料模块的等级系统进度条,需要实现左侧显示当前等级、中间展示进度条、右侧显示下一等级的横向布局,当前实现未达到预期效果。

现有代码

HTML

<div class="card">
<div class="progress userProfileProgress myProfileProgress">
  <h6 class="current_rank">8</h6>
  <div class="determinate userProfileDeterminate" style="width: 0%; background-color: #00d871;"></div>
  <h6 class="next_rank">7</h6>
</div>
</div>

CSS

.myProfileProgress {
  display: grid;
  grid-template-columns: 1fr 1fr 1fr;
  grid-template-rows: 1fr 1fr 1fr;
  grid-template-areas: "current_rank MyProfileProgress next_rank";
  margin-top: 10px;
  margin-bottom: 10px;
  margin-left: 17px;
  margin-right: 17px;
}

.current_rank {
  grid-area: current_rank;
}

.MyProfileProgress {
  grid-area: MyProfileProgress;
}

.next_rank {
  grid-area: next_rank;
}

.card .myProfileProgress {
  background-color: var(--color-dark-variant);
  position: relative;
  top: 15px;
}

.card .userProfileProgress, .userProfileDeterminate {
  height: 7px;
  border-radius: 5px;
}

.progress {
  position: relative;
  height: 4px;
  display: block;
  width: 100%;
  background-color: #acece6;
  border-radius: 2px;
  margin: 0.5rem 0 1rem 0;
  overflow: hidden;
}
调整方案

1. 优化HTML结构

重构层级,让等级文字和进度条容器并列,结构更清晰:

<div class="card">
  <div class="level-progress-container">
    <h6 class="current_rank">8</h6>
    <div class="progress userProfileProgress">
      <div class="determinate userProfileDeterminate" style="width: 60%; background-color: #00d871;"></div>
    </div>
    <h6 class="next_rank">9</h6>
  </div>
</div>

2. 重写CSS布局

使用Flex实现横向对齐,同时调整样式细节:

/* 主容器:横向排列,居中对齐,分配空间 */
.level-progress-container {
  display: flex;
  align-items: center;
  gap: 12px;
  margin: 10px 17px;
  padding: 8px 0;
}

/* 当前/下一等级:固定宽度,居中显示 */
.current_rank, .next_rank {
  margin: 0;
  width: 24px;
  text-align: center;
  font-size: 16px;
}

/* 进度条容器:占据中间剩余空间 */
.userProfileProgress {
  flex: 1;
  height: 7px;
  background-color: var(--color-dark-variant, #ddd);
  border-radius: 5px;
  overflow: hidden;
  margin: 0;
}

/* 进度条填充部分 */
.userProfileDeterminate {
  height: 100%;
  border-radius: 5px;
  transition: width 0.3s ease;
}

.card {
  padding: 16px;
}

调整说明

  • 用Flex替代Grid布局,适配这种简单的横向分配场景,代码更简洁易维护
  • 修正下一等级数字逻辑(原代码中下一等级小于当前等级,不符合等级提升逻辑)
  • 增加进度过渡动画,提升交互体验
  • 明确元素间距与对齐规则,确保视觉效果匹配预期

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 14:40:47