JSFiddle - React, Tailwind, and code Playground

by RomanFF

HTML

<div class="wrap">
  <div class="box">
    <div class="line1">
      <div class="item crimson">
      <h2 class="upBox-title #E778A7">Заказ</h2>
      <p>Вы размещаете заказ через чат или через форму</p>
      <span></span>
      </div>
      <div class="item green">
      <h2 class="upBox-title #71C24C">Подтверждение</h2>
      <p>Вы подтверждаете все параметры заказа</p>
      <span></span>
      </div>
      <div class="item purple">
      <h2 class="upBox-title #594487">Доставка</h2>
      <p>Мы доставляем ваш заказ выбранным способом</p>
      <span></span>
      </div>
    </div>
    <div class="line2">
      <div class="item blue">
      <p>Быстрый ответ с вариантами исполнения и сроками</p>
      <h2 class="downBox-title #26CDDA">Ответ</h2>
      <span></span>
      </div>
      <div class="item yellow">
      <p>Мы печатаем ваш заказ в кратчайшие сроки</p>
      <h2 class="downBox-title #FCE000">Печать</h2>
      <span></span>
      </div>
    </div>
  </div>
</div>

CSS

/* треугольник,пунктирная линия верхние блоки - .line1 span:after,.line1 span:before.*/
/*треугольник,пунктирная линия нижние блоки - line2 span:after,.line1 span:before.*/
/* начало и конец волны .box:before,.box:after*/
 /* центральные дуги волны.line1 .item:after,.line2 .item:after */
 
 
 
 *,
 :after,
 :before {
  box-sizing: border-box;
 }
 
.wrap{
  max-width:600px;
  border:1px solid black;
  margin: 0 auto;
  overflow:hidden;
}
h2{
  font-size:16px;
  background-color: #fff;
  text-align:center;
  width:100%;
}
.upBox-title{
  margin:0 auto;
  border-radius: 5px 5px 0 0;
}
.downBox-title{
  margin:0 auto;
  border-radius: 0 0 5px 5px;
}
p{
  font-size:12px;
  text-align:center;
  color:white;
}







/* позиционирование */
.box{
  position:relative;
  display: flex;
  flex-direction: column;
  align-items:center;
  
}
/* отступ верхник блоков от нижних*/
.line1{
  margin-bottom: 106px;
}
.line1 .item:before {
    content: "";
    width: 16px;
    height: 16px;
    background-color: black;
    position: absolute;
    border-radius: 50%;
    top: 163px;
    left: 52px;
    z-index: 1;
}
.line2 .item:before {
    content: "";
    width: 16px;
    height: 16px;
    background-color: black;
    position: absolute;
    border-radius: 50%;
    top: -80px;
    left: 52px;
    z-index: 1;
}
.line1 .item:after {
 content: "";
    width: 112%;
    height: 116%;
    position: absolute;
    left: -8%;
    top: 47%;
    border-radius: 50%;
    border: 5px solid transparent;
    border-bottom: 5px solid #ccc;
}
  .line2 .item:after {
  content: "";
    width: 127%;
    height: 130%;
    position: absolute;
    left: -15%;
    top: -70%;
    border-radius: 50%;
    border: 5px solid transparent;
    border-top: 5px solid #ccc;
}
/* начало  и конец линии */
.box:before {
    content: "";
    height: 200px;
    width: 180px;
    position: absolute;
    left: -62px;
    top: 42.5%;
    border-radius: 50%;
    border: 5px solid transparent;
    border-top: 5px solid #ccc;
...

JavaScript

let h2 = document.querySelectorAll('h2');

for (let i = 0; i < h2.length;i++){
  h2[i].style.color = h2[i].classList[1];
  h2[i].style.border = '1px solid' + h2[i].classList[1];
}
 
let span = document.querySelectorAll('span');
console.log(span)