<div> animate switch
HTML
<div id="container">
<div id="one"><a class="moveUp">div 1</a></div>
<div id="two"><a class="moveUp">div 2</a></div>
<div id="three"><a class="moveUp">div 3</a></div>
</div>
CSS
#container {
width: 200px;
color:#fff;
position: relative;
text-align:center;
}
#container div {
position: relative;
margin:10px;
background:#ff00ab;
padding:5px;
border-radius:3px;
text-align:center;
display:inline-block;
}
JavaScript
var animating = false;
$('#container').on('click', '.moveUp', function () {
var clickedDiv = $(this).parent(),
prevDiv = clickedDiv.prev(),
nextDiv = clickedDiv.next(),
distance = clickedDiv.outerWidth() +
parseInt(clickedDiv.css('margin-left'), 10) +
parseInt(clickedDiv.css('margin-right'), 10);
if (!animating && prevDiv.length) {
animating = true;
$.when(clickedDiv.animate({
left: "-=" + distance
}, 1000),
prevDiv.animate({
left: "+=" + distance
}, 1000)).done(function () {
prevDiv.insertAfter(clickedDiv);
nextDiv.insertAfter(prevDiv);
prevDiv.css('left', '0px');
clickedDiv.css('left', '0px');
animating = false;
});
}
});