JSFiddle - React, Tailwind, and code Playground

by navinleon

HTML

<div class="source">
  source
</div>

<div class="bline">

</div>
<div id="eventsHolder">

  <!-- 
<div class="events">
  <img src="https://cdn3.iconfinder.com/data/icons/picons-social/57/32-windows8-32.png">
</div>
<div class="events">
  <img src="https://cdn3.iconfinder.com/data/icons/picons-social/57/32-windows8-32.png">
</div>
<div class="events">
  <img src="https://cdn3.iconfinder.com/data/icons/picons-social/57/32-windows8-32.png">
</div>
<div class="events">
  <img src="https://cdn3.iconfinder.com/data/icons/picons-social/57/32-windows8-32.png">
</div> -->
</div>
<div class="rightconnector"></div>
<div class="blinereverse">

</div>

SCSS

.source{
  padding: 5px 10px;
  border: 1px solid blue;
  display: inline-block;
  border-radius: 5px;
  margin-left: 8px;
}
#eventsHolder{
  display: inline-block;
}
.bline{
  height: 0px;
  width: 0px;
  border-left: 1px solid blue;
  margin-left: 40px;
  border-bottom-left-radius: 35px;
  border-bottom: 1px solid blue;
  transition: all .5s;
  transition-timing-function: linear;
}
.rightconnector{
    height: 0px;
    width: 0px;
    border-top-right-radius: 35px;
    border-top: 1px solid blue;
    animation-name: lineAnimRightConnector;
    animation-fill-mode: forwards;
    animation-duration: .7s;
    animation-delay: 4s;
    border-right: 1px solid blue;
    border-left: 0px;
    border-bottom: 0px;
    display: inline-block;
    position: absolute;
    margin-left: -1px;
    z-index: 0;
}
.blinereverse{
  border-left: 1px solid blue;
    border-bottom-left-radius: 35px;
    border-bottom: 1px solid blue;
    transition: all 2s;
    transition-timing-function: linear;
    margin-right: 60px;
    margin-top: -50px;
    float: right;
    transform: scaleX(-1);
    direction: ltr;
    width: 0px;
    height: 0px;
}
.blinereverseAnimH{
  height: 50px;
}
.blinereverseAnimW{
  width: 80px;
}
@keyframes lineAnim {
  10% {
    height: 0px;
    width: 0px;
  }
  50% {
    height: 0px;
    width: 0px;
  }
  52% {
    height: 132px;
    width: 100px;
  }
  60% {
    height: 132px;
    width: 280px;
  }
  
  100% {
    height: 132px;
    width: 380px;
  }
}

@keyframes lineAnimreverse {
  10% {
    height: 0px;
    width: 0px;

  }
  50% {
    height: 132px;
    width: 0px;
  }
  52% {
    height: 132px;
    width: 80px;
  }
  60% {
    height: 132px;
    width: 80px;
  }
  
  100% {
    height: 132px;
    width: 80px;
  }
}
@keyframes lineAnimRightConnector {
  10% {
    height: 0px;
    width: 0px;

  }
  50% {
    height: 1px;
    width: 50px;
  }
  52% {
    height: 1px;
    width: 50px;
  }
  70% {
    height: 50px;
    width: 50px;
  }
  
  100% {
    height:...

JavaScript

var width = 80;
function add() {
  
          $(".bline").css({"width": width});
          width = width + 140;
          $('#eventsHolder').append('<div class="events"><img src="https://cdn3.iconfinder.com/data/icons/picons-social/57/32-windows8-32.png"></div>');
window.setTimeout(function() {
    $(".events").addClass("eventAnim");
  }, 800);
}

 window.setTimeout(function() {
    $(".bline").addClass("blineAnimH")
      window.setTimeout(function() {
        $(".bline").addClass("blineAnimW")
          }, 500);
  }, 100);

window.setTimeout(add, 1000)

window.setTimeout(add, 2000)

window.setTimeout(add, 3000)

window.setTimeout(function(){
  window.setTimeout(function() {
    $(".blinereverse").addClass("blinereverseAnimH")
      window.setTimeout(function() {
        $(".blinereverse").addClass("blinereverseAnimW")
          }, 500);
  }, 100);
}, 5000)