If you want to achieve that specific design, you can utilize nested flexboxes with some acrobatic moves.
Here is a quick and rough example to showcase the technique. Feel free to adjust the code to suit your requirements.
NOTES:
The line behind the number is actually just one line (div class=unit__timeline
) for demonstration purposes. To make it more visually appealing, you will need two 'div-lines' on a live server. You can align them using the same technique by calculating the necessary sizes/height/width of your section (using absolute positioning and calculation values for top/right/bottom/left).
Regarding breakpoints: there are only two specified (mobile and small desktops). Make sure to calculate sizes for font-size, grid layout, etc. according to your needs.
html {
font-family: sans-serif;
}
.unit__wrapper {
position: relative;
display: flex;
flex-direction: row;
}
.unit {
display: flex;
flex-direction: column;
justify-content: space-between;
align-items: center;
}
.unit__number {
padding-bottom: 20px;
}
.unit__number span {
display: block;
width: 50px;
height: 50px;
font-size: 20px;
background: steelblue;
border: 15px solid white;
border-radius: 100%;
display: flex;
justify-content: center;
align-items: center;
}
.unit__content {
flex-grow: 1;
padding: 0 15px;
text-align: center;
}
.unit__timeline {
position: absolute;
top: 32.5px;
left: calc( 100% / 6 );
right: calc( 100% / 6 );
height: 10px;
background: green;
z-index: -1;
}
@media (min-width: 768px) {
.unit__wrapper {
flex-direction: column;
}
.unit {
flex-direction: row;
}
.unit__number {
padding: 20px 0;
}
.unit__content {
text-align: left;
padding: 0;
}
.unit__timeline {
left: 32.5px;
top: 60px;
bottom: 60px;
right: auto;
height: auto;
width: 10px;
}
}
<div class="unit__wrapper">
<div class="unit__timeline"></div>
<div class="unit">
<div class="unit__number"><span>1</span></div>
<div class="unit__content">
Li Europan lingues es membres del sam familie.
...
</div>