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)