JSFiddle - React, Tailwind, and code Playground
by ozzon91
HTML
<div id="container">
<div id="one"><a class="moveUp">Up 1</a></div>
<div id="two"><a class="moveUp">Up 2</a></div>
<div id="three"><a class="moveUp">Up 3</a></div>
</div>
CSS
#container {
width: 200px;
border: 1px solid black;
position: relative;
}
#container div {
border: 1px solid black;
position: relative;
}
#container a {
display: block;
}
JavaScript
var animating = false;
$('#container').on('click', '.moveUp', function () {
if (animating) {
return;
}
var clickedDiv = $(this).closest('div'),
prevDiv = clickedDiv.prev(),
distance = clickedDiv.outerHeight();
if (prevDiv.length) {
animating = true;
$.when(clickedDiv.animate({
top: -distance
}, 600),
prevDiv.animate({
top: distance
}, 600)).done(function () {
prevDiv.css('top', '0px');
clickedDiv.css('top', '0px');
clickedDiv.insertBefore(prevDiv);
animating = false;
});
}
});