效果展示
实现原理
布局分析:
html部分:
<div class="center">
<!-- 容器 -->
<div class="container">
<!-- 第一步 -->
<div class="item">
<!-- 图案 -->
<div class="step_wrap">
<!-- 占位元素 -->
<div class="flexbase"></div>
<!-- 中间圆形 -->
<div class="wrap">
<div class="wrap-inner">1</div>
</div>
<!-- 线条 -->
<div class="flexbase">
<div class="line"></div>
</div>
</div>
<!-- 文字描述 -->
<div class="text">
<p>第一步</p>
</div>
</div>
<!-- 第二步 -->
<div class="item">
<div class="step_wrap">
<div class="flexbase">
<div class="line"></div>
</div>
<div class="wrap">
<div class="wrap-inner">2</div>
</div>
<div class="flexbase">
<div class="line"></div>
</div>
</div>
<div class="text">
<p>第二步</p>
</div>
</div>
<!-- 第三步 -->
<div class="item">
<div class="step_wrap">
<div class="flexbase">
<div class="line"></div>
</div>
<div class="wrap">
<div class="wrap-inner">3</div>
</div>
<div class="flexbase"></div>
</div>
<div class="text">
<p>第三步</p>
</div>
</div>
</div>
</div>
css部分:
* {
box-sizing: border-box;
margin: 0;
}
/* 用于居中 */
.center {
align-items: center;
display: flex;
height: 100%;
justify-content: center;
padding: 8px;
}
/* 容器 */
.container {
display: flex;
width: 80%;
}
/* 每一步 */
.item {
flex: 1 1 0%;
}
/* 图案 */
.item .step_wrap {
align-items: center;
display: flex;
justify-content: center;
margin-bottom: 16px;
}
/* 中间圆形 */
.item .step_wrap .wrap {
align-items: center;
display: flex;
justify-content: center;
margin: 0px 4px;
}
.item .step_wrap .wrap .wrap-inner {
background-color: rgba(0, 0, 0, 0.3);
border-radius: 9999px;
height: 32px;
width: 32px;
text-align: center;
line-height: 32px;
}
/* 线条 */
.item .step_wrap .line {
background-color: rgba(0, 0, 0, 0.3);
height: 1px;
width: 100%;
}
/* 文字描述 */
.item .text {
display: flex;
justify-content: center;
padding: 0px 16px;
}
/* 占位元素 */
.item .flexbase {
flex: 1 1 0%;
}
看起来好像有点多,但每个步骤的html都可以通过循环来降低代码量。