JSFiddle - React, Tailwind, and code Playground
HTML
<div class="container">
<div class="row">
<div class="item">
<div class="inline">
<div class="line"></div>
<div class="item__icon"></div>
<div class="line"></div>
</div>
<p class="item__text">Much text much text Much text much text Much text much text</p>
</div>
<div class="item">
<div class="inline">
<div class="line"></div>
<div class="item__icon"></div>
<div class="line"></div>
</div>
<p class="item__text">little text</p>
</div>
<div class="item">
<div class="inline">
<div class="line"></div>
<div class="item__icon"></div>
<div class="line"></div>
</div>
<p class="item__text">little text</p>
</div>
<div class="item">
<div class="inline">
<div class="line"></div>
<div class="item__icon"></div>
<div class="line"></div>
</div>
<p class="item__text">little text</p>
</div>
</div>
<div class="row row--bottom row--additional-lines">
<div class="item">
<div class="inline">
<div class="line"></div>
<div class="item__icon"></div>
<div class="line"></div>
</div>
<p class="item__text">little text</p>
</div>
<div class="item">
<div class="inline">
<div class="line"></div>
<div class="item__icon"></div>
<div class="line"></div>
</div>
<p class="item__text">Much text much text Much text much text Much text much text</p>
</div>
<div class="item">
<div class="inline">
<div class="line"></div>
<div class="item__icon"></div>
...
CSS
*,
*:after,
*:before {
margin: 0;
padding: 0;
box-sizing: border-box;
}
body {
font-size: 16px;
font-family: Arial, sans-serif;
background: linear-gradient(90deg, #e66465, #9198e5);
}
.container {
position: relative;
max-width: 800px;
margin: 30px auto;
}
.container:before,
.container:after {
content: '';
position: absolute;
top: 20px;
bottom: -20px;
width: 2px;
background-color: green;
}
.container:before {
left: 0;
}
.container:after {
right: 0;
}
.row {
display: flex;
justify-content: center;
align-items: flex-start;
}
.row--bottom {
position: absolute;
top: 100%;
left: 0;
right: 0;
}
.row--additional-lines:before,
.row--additional-lines:after {
content: '';
position: absolute;
top: 19px;
height: 2px;
background-color: green;
width: 12.5%;
}
.row--additional-lines:before {
left: 0;
}
.row--additional-lines:after {
right: 0;
}
.item {
width: 25%;
text-align: center;
}
.item__icon {
width: 40px;
height: 40px;
border: 2px solid green;
border-radius: 50%;
}
.item__text {
padding: 5px 10px 15px;
color: white;
font-size: 15px;
}
.inline {
display: flex;
justify-content: center;
}
.line {
flex-grow: 1;
flex-shrink: 1;
margin-top: 19px;
height: 2px;
background-color: green;
}