JSFiddle - React, Tailwind, and code Playground
by frankvaneykelen
HTML
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/2.3.2/css/bootstrap.css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/sortable/0.8.0/js/sortable.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/sortable/0.8.0/css/sortable-theme-bootstrap.css">
<ol class="simple_with_animation vertical">
<li class="" style="">Item 2</li>
<li class="highlight" style="">Item 2</li>
<li>Item 3</li><li class="" style="">Item 1</li>
<li>Item 4</li>
<li>Item 5</li>
<li>Item 6</li>
</ol>
<ol class="simple_with_animation vertical">
<li class="highlight">Item 1</li>
<li class="highlight">Item 3</li>
<li class="highlight">Item 4</li>
<li class="highlight">Item 5</li>
<li class="highlight">Item 6</li>
</ol>
CSS
body.dragging, body.dragging * {
cursor: move !important;
}
.dragged {
position: absolute;
opacity: 0.5;
z-index: 2000;
}
ol.example li.placeholder {
position: relative;
/** More li styles **/
}
ol.example li.placeholder:before {
position: absolute;
/** Define arrowhead **/
}
JavaScript
var adjustment;
$("ol.simple_with_animation").sortable({
group: 'simple_with_animation',
pullPlaceholder: false,
// animation on drop
onDrop: function ($item, container, _super) {
var $clonedItem = $('<li/>').css({height: 0});
$item.before($clonedItem);
$clonedItem.animate({'height': $item.height()});
$item.animate($clonedItem.position(), function () {
$clonedItem.detach();
_super($item, container);
});
},
// set $item relative to cursor position
onDragStart: function ($item, container, _super) {
var offset = $item.offset(),
pointer = container.rootGroup.pointer;
adjustment = {
left: pointer.left - offset.left,
top: pointer.top - offset.top
};
_super($item, container);
},
onDrag: function ($item, position) {
$item.css({
left: position.left - adjustment.left,
top: position.top - adjustment.top
});
}
});