JSFiddle - React, Tailwind, and code Playground

by rikazavr

HTML

<div class="line">
  <div class="row">
    <div class="item">
      Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sagittis nulla sed velit rhoncus, ac convallis neque maximus.
    </div>
      <div class="item">
        Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sagittis nulla sed velit rhoncus, ac convallis neque maximus.
    </div>
  </div>

<!--   <div class="item">
    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sagittis nulla sed velit rhoncus, ac convallis neque maximus.
  </div>
    <div class="item">
      Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sagittis nulla sed velit rhoncus, ac convallis neque maximus.
  </div> -->
</div>

SCSS

.line {
  width: 1px;
  height: 100vh;
  background-color: #c6c6c6;
  position: relative;
  left: 50%;
}

.row {
  position: relative;
  border: 1px solid;
}

.item {
  position: absolute;
  width: 350px;
  margin-bottom: 30px;
}

.item:nth-child(odd) {
  top: 0;
  text-align: right;
  left: -430px;
  padding-right: 70px;
  &:after {
    content: '';
    position: absolute;
    left: 100%;
    top: 50%;
    margin-top: -10px;
    width: 20px;
    height: 20px;
    background-color: #c6c6c6;
    border-radius: 10px;
  }
  &:before {
    content: '';
    position: absolute;
    right: 5px;
    top: 50%;
    margin-top: -27px;
    width: 50px;
    height: 50px;
    border: 2px solid blue;
    border-radius: 30px;
  }
}

.item:nth-child(even) {
  top: 100px;
  left: 10px;
  padding-left: 70px;
  &:after {
    content: '';
    position: absolute;
    right: 100%;
    top: 50%;
    margin-top: -10px;
    width: 20px;
    height: 20px;
    background-color: #c6c6c6;
    border-radius: 10px;
  }
  &:before {
    content: '';
    position: absolute;
    left: 5px;
    top: 50%;
    margin-top: -27px;
    width: 50px;
    height: 50px;
    border: 2px solid blue;
    border-radius: 30px;
  }
}