JSFiddle - React, Tailwind, and code Playground
HTML
<div class="timeline">
<div class="timeline__item"><span>Текст Текст Текст Текст Текст Текст Текст Текст Текст Текст Текст </span></div>
<div class="timeline__item"><span>Текст Текст Текст Текст Текст Текст Текст Текст Текст Текст Текст </span></div>
<div class="timeline__item"><span>Текст Текст Текст Текст Текст Текст Текст Текст Текст Текст Текст </span></div>
<div class="timeline__item"><span>Текст Текст Текст Текст Текст Текст Текст Текст Текст Текст Текст </span></div>
<div class="timeline__item"><span>Текст Текст Текст Текст Текст Текст Текст Текст Текст Текст Текст </span></div>
</div>
CSS
*,
:before,
:after {
box-sizing: border-box;
}
body {
font-family: sans-serif;
margin: 0;
}
.timeline {
max-width: 600px;
margin: 30px auto;
counter-reset: section;
}
/**/
.timeline__item {
width: 50%;
min-height: 200px;
position: relative;
padding-top: 13px;
padding-bottom: 100px;
}
.timeline__item:before {
counter-increment: section;
content: counter(section);
display: flex;
align-items: center;
justify-content: center;
border-radius: 100%;
color: #fff;
background-color: #000;
width: 40px;
height: 40px;
position: absolute;
z-index: 2;
top: 0;
}
.timeline__item:after {
content: '';
position: absolute;
z-index: 1;
top: 42px;
bottom: 2px;
width: 1px;
background-color: #000;
}
.timeline__item span {
display: inline-block;
text-align: center;
}
/**/
.timeline__item:nth-child(even) {
margin-left: auto;
padding-left: 35px;
padding-right: 15px;
}
.timeline__item:nth-child(even):before {
left: -20px;
}
.timeline__item:nth-child(even):after {
left: -.5px;
}
/**/
.timeline__item:nth-child(odd) {
padding-right: 35px;
padding-left: 15px;
text-align: right;
}
.timeline__item:nth-child(odd):before {
right: -20px;
}
.timeline__item:nth-child(odd):after {
right: -.5px;
}
/**/
.timeline__item:last-child {
min-height: 40px;
padding-bottom: 0;
}
.timeline__item:last-child:before {}
.timeline__item:last-child:after {
display: none;
}