JSFiddle - React, Tailwind, and code Playground
by twinturbotom
HTML
<button id='start'>animate</button>
<button id='reset'>Reset</button>
<button id='pause'>pause</button>
<div class='boxes'>
<div class='box box1'></div>
<div class='box box2'></div>
<div class='box box3'></div>
<div class='box box4'></div>
<div class='box box5'></div>
<div class='box box6'></div>
</div>
CSS
.boxes{position: relative}
.box{width: 40px; height: 40px; background-color: green; position:absolute;}
.box1{left: 0px;}
.box2{left: 60px;}
.box3{left: 120px;}
.box4{left: 180px;}
.box5{left: 240px;}
.box6{left: 300px;}
JavaScript
//stack many1
var curr = -1;
var paused = false;
var animations = [
[ { "sel": ".box1","main": {"css": {"top": "100px"},"dur": 1000},
"secondary": {"delay": 100,"css": {"top": "50px"},"dur": 1000 }
},
{"sel": ".box2","main": {"css": {"top": "100px"},"dur": 1000}},
{"sel": ".box4","main": {"css": {"top": "100px"},"dur": 1000}},
{ "sel": ".box5","main": {"css": {"top": "100px"},"dur": 1000},
"secondary": {"delay": 1000,"css": {"top": "50px"},"dur": 1000 }
}
],
[ { "sel": ".box3","main": {"css": {"top": "100px"},"dur": 1000},
"secondary": {"delay": 2500,"css": {"top": "50px"},"dur": 1000 }
},
{"sel": ".box4","main": {"css": {"top": "0px"},"dur": 1000}}
],
[{ "sel": ".box5","main": {"css": {"top": "0px"},"dur": 1000},
"secondary": {"delay": 100,"css": {"top": "50px"},"dur": 1000 }
},
{"sel": ".box6","main":{ "css": {"top": "0px"},"dur": 1000}},
{"sel": ".box2","main":{ "css": {"top": "0px"},"dur": 1000}}
]
];
function animateBoxes() {
if (paused) {
return;
}
//curr = (curr + 1 < animations.length) ? curr + 1 : 0;
curr=curr+1;
if( !animations[curr]){
alert('DONE!!');
return;
}
/* array of animation deffereds*/
var anims = [];
console.dir( animations[curr])
$.each(animations[curr], function(i, currAnim) {
var anim = boxAnimate(currAnim);
anims.push(anim)
});
$.when.apply(null, anims).done(function() {
animateBoxes();
});
}
$('#start').click(function() {
paused = false;
animateBoxes();
});
$('#reset').click(function() {
curr = -1;
stopanimation();
$('.box').css({
top: '0px'
});
});
$('#pause').click(function() {
stopanimation();
});
function stopanimation() {
paused = true;
$('div:animated').stop(true, true);
}
function...