html - 仅使用 FLEX 和 CSS 构建进度步骤 UI 组件 - 帮助标记定位?

标签 html css flexbox

我正在尝试构建一个 ProgressSteps ui 组件,就像我在 LinkedIn 上看到的那样:

enter image description here

我想使用 flexbox,所以最终我可以使这个组件动态化。这是我目前拥有的(请参阅包含的代码以了解其编码方式)

我可以使用帮助的地方是将标签定位在底部并居中。我不知道如何用 flexbox 做到这一点,真的想避免使用绝对的、定义的定位……

如何使用 flexbox 更新我的代码以像 LinkedIn 示例一样呈现?

谢谢

enter image description here

.Container {
  display: flex;
  align-items: center;
  box-sizing: border-box;
  width: 100%;
  height: 48px;
  margin: 0;
  padding: 0 32px;
}

.ProgressStep {
  flex-grow: 1;
  box-sizing: border-box;
  display: flex;
  align-items: center;
}

.ProgressDot {
  background-color: dodgerblue;
  max-width: 14px;
  height: 14px;
  flex-grow: 1;
  border-radius: 50%;
  border: 3px solid #fff;
}

.ProgressBar {
  background-color: dodgerblue;
  flex-grow: 1;
  height: 2px;
}

.ProgressLabel {
  font-size: 14px;
  line-height: 17px;
}
<div class="Container">
   <div class="ProgressStep">
      <div class="ProgressDot"></div>
      <div class="ProgressBar"></div>
      <div class="ProgressLabel">LabelHere</div>
   </div>
   <div class="ProgressStep">
      <div class="ProgressDot"></div>
      <div class="ProgressBar"></div>
      <div class="ProgressLabel">LabelHere</div>
   </div>
   <div class="ProgressStep">
      <div class="ProgressDot"></div>
      <div class="ProgressBar"></div>
   </div>
</div>

最佳答案

这可以通过更改 HTML 结构来实现。将 ProgressLabel 元素移出容器。

这是结果:

.Container {
  display: flex;
  align-items: center;
  box-sizing: border-box;
  width: 100%;
  height: 48px;
  margin: 0;
  padding: 0 15px;
}

.ProgressStepLabels {
  display: flex;
  align-items: center;
  box-sizing: border-box;
  width: 100%;
  height: 48px;
  margin: 0;
  padding: 0 15px;
}

.ProgressStep {
  flex-grow: 1;
  box-sizing: border-box;
  display: flex;
  align-items: center;
}

.ProgressDot {
  background-color: dodgerblue;
  max-width: 14px;
  height: 14px;
  flex-grow: 1;
  border-radius: 50%;
  border: 3px solid #fff;
  margin: 0 17px;
}

.ProgressBar {
  background-color: dodgerblue;
  flex-grow: 1;
  height: 2px;
}

.ProgressLabel {
  font-size: 14px;
  line-height: 17px;
  flex-grow: 1;
}
<div class="Container">
   <div class="ProgressStep">
      <div class="ProgressDot"></div>
      <div class="ProgressBar"></div>
   </div>
   <div class="ProgressStep">
      <div class="ProgressDot"></div>
      <div class="ProgressBar"></div>
   </div>
   <div class="ProgressStep">
      <div class="ProgressDot"></div>
   </div>
</div>
<div class="ProgressStepLabels">
	<div class="ProgressLabel">LabelHere</div>
	<div class="ProgressLabel">LabelHere</div>
	<div class="ProgressLabel">LabelHere</div>
</div>

关于html - 仅使用 FLEX 和 CSS 构建进度步骤 UI 组件 - 帮助标记定位?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51119726/

相关文章:

javascript - 具有可隐藏公告/提示的站点

jquery - 如何将可滚动 div 滚动到正中心?

javascript - 无法调整表格的大小超出特定的最小宽度

html - IE10的Flexbox : differences between March 2012 Draft and current frozen version

html - 对齐 flexbox 内容器底部的元素

html - 如何使用css在右下div添加图像

javascript - VueJS2如何动态向父组件发出事件?

javascript - 防止在主页上滚动的 Facebook 模态弹出窗口

javascript - 使用 JQuery 隐藏一个 div

html - 在 IE11 中使用页眉、页脚和内容部分进行布局