JSFiddle - React, Tailwind, and code Playground
HTML
<link rel="preconnect" href="https://fonts.gstatic.com">
<link href="https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;700&display=swap" rel="stylesheet">
<div class="ingredients">
<div class="ingredients__main"></div>
<div class="ingredients__img ingredients__img--one"></div>
<div class="ingredients__img ingredients__img--two"></div>
<div class="ingredients__img ingredients__img--three"></div>
<div class="ingredients__item ingredients__item--one">
<div class="ingredients__number">01</div>
<div class="ingredients__desc">Описание</div>
</div>
<div class="ingredients__item ingredients__item--two">
<div class="ingredients__number">02</div>
<div class="ingredients__desc">Описание</div>
</div>
<div class="ingredients__item ingredients__item--three">
<div class="ingredients__number">03</div>
<div class="ingredients__desc">Описание</div>
</div>
<div class="ingredients__item ingredients__item--four">
<div class="ingredients__number">04</div>
<div class="ingredients__desc">Описание</div>
</div>
<div class="ingredients__item ingredients__item--five">
<div class="ingredients__number">05</div>
<div class="ingredients__desc">Описание</div>
</div>
<div class="ingredients__item ingredients__item--six">
<div class="ingredients__number">06</div>
<div class="ingredients__desc">Описание</div>
</div>
</div>
SCSS
body {
background: #1f2227;
padding-top: 100px;
}
.ingredients {
position: relative;
max-width: 1100px;
display: flex;
align-items: center;
justify-content: center;
margin: 0 auto;
&__main {
width: 200px;
height: 400px;
background: rgba(3, 3, 3, .4);
}
&__item {
position: absolute;
font-family: Open sans;
font-size: 15px;
font-weight: 700;
letter-spacing: 0.08em;
text-align: right;
&--four,
&--five,
&--six {
text-align: left;
.ingredients__number:before {
left: unset;
right: 110%;
}
}
&--one {
top: 20px;
left: 0;
.ingredients__number:before {
width: 180px;
}
}
&--two {
top: 50%;
left: 0;
.ingredients__number:before {
width: 240px;
}
}
&--three {
top: 80%;
left: 10%;
.ingredients__number:before {
width: 80px;
}
}
&--four {
top: -25px;
right: 0%;
.ingredients__number:before {
width: 100px;
}
}
&--five {
top: 30%;
right: 0%;
.ingredients__number:before {
width: 220px;
}
}
&--six {
top: 60%;
right: 10%;
.ingredients__number:before {
width: 140px;
}
}
}
&__number {
position: relative;
color: #88ff6f;
margin-bottom: 10px;
&:before {
content: "";
position: absolute;
top: 50%;
left: 110%;
transform: translateY(-50%);
width: 300px;
border-top: 2px dashed #fff;
}
}
&__desc {
width: 220px;
color: #fff;
text-transform: uppercase;
}
&__img {
position: absolute;
&--one {
top: 60px;
left: 33%;
width: 50px;
height: 50px;
background: rgba(3, 3, 3, .4);
}
&--two {
top: -60px;
right: 30%;
width: 100px;
height: 100px;
background: rgba(3, 3, 3, .4);
}
...