Easy drag and drop
Drag and drop list making use of JQuery touch punch which also works on mobile!
by MZein
HTML
<script src="https://code.jquery.com/jquery-2.2.3.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.10.3/jquery-ui.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jqueryui-touch-punch/0.2.2/jquery.ui.touch-punch.min.js"></script>
<div id="level-list" class="level-list">
<div class="level-list-item">
<div>Level 1</div>
<div>
<div class="drag-icon">:::</div>
</div>
</div>
<div class="level-list-item">
<div>Level 2</div>
<div>
<div class="drag-icon">:::</div>
</div>
</div>
<div class="level-list-item">
<div>Level 3</div>
<div>
<div class="drag-icon">:::</div>
</div>
</div>
<div class="level-list-item">
<div>Level 4</div>
<div>
<div class="drag-icon">:::</div>
</div>
</div>
</div>
CSS
* {
font-family: Arial;
}
.level-list {
border-radius: 2px;
background-color: #EEE;
height: 300px;
padding: 4px;
margin-bottom: 12px;
box-shadow: 0 0 4px rgba(0, 0, 0, 0.2) inset;
border: 1px solid #A8A8A8;
overflow-y: auto;
}
.level-list > div {
border-radius: 6px;
background-color: white;
display: block;
width: 100%;
padding: 4px;
box-sizing: border-box;
border: 2px solid #A8A8A8;
box-shadow: 0 0 2px rgba(0, 0, 0, 0.4);
margin-bottom: 4px;
font-size: 20px;
}
@keyframes level-list-destroy-anim {
0% {
opacity: 1;
margin-top: 0;
}
50% {
opacity: 0;
margin-top: 0;
}
100% {
margin-top: -48px;
opacity: 0;
}
}
.level-list > div.destroyed {
margin-top: 0;
opacity: 1;
animation-name: level-list-destroy-anim;
animation-duration: .5s;
animation-fill-mode: forwards;
}
.level-list > div > div {
display: inline-block;
}
.level-list > div > div:last-child {
float: right;
}
.clear-float {
clear: both;
}
/* DRAG STYLES */
.level-list-item {
cursor: grab;
cursor: -moz-grab;
cursor: -webkit-grab;
}
.level-list-item .drag-icon {
display: inline-block;
padding: 6px;
padding-top: 0;
}
.level-list-item:active {
cursor: grabbing;
cursor: -moz-grabbing;
cursor: -webkit-grabbing;
}
.dragging-item {
border: 3px dashed black !important;
}
.highlight {
border: 1px solid red;
font-weight: bold;
font-size: 45px;
background-color: lightblue;
}
JavaScript
$(document).ready(function() {
$("#level-list").sortable({
start: function(event, ui) {
ui.item.toggleClass("highlight");
},
stop: function(event, ui) {
ui.item.toggleClass("highlight");
}
});
});