JSFiddle - React, Tailwind, and code Playground
HTML
<div class="main">
<div class="main_area">
<div class="block free"></div>
<div class="block free"></div>
<div class="block free"></div>
<div class="block free"></div>
<div class="block free"></div>
<div class="block free"></div>
<div class="block free"></div>
<div class="block free"></div>
<div class="block free"></div>
<div class="block free"></div>
<div class="block free"></div>
<div class="block free"></div>
</div>
</div>
<div class="main">
<div class="main_area">
<div class="block 1">
<div class="my_block">1</div>
</div>
<div class="block 1">
<div class="my_block">2</div>
</div>
<div class="block 1">
<div class="my_block">3</div>
</div>
<div class="block 1">
<div class="my_block">4</div>
</div>
<div class="block 1">
<div class="my_block">5</div>
</div>
</div>
</div>
CSS
.main {
width:600px;
height:200px;
border:1px solid red;
background-color: #868686;
}
.main_area {
max-width:600px;
position: absolute;
}
.block {
width:50px;
height:50px;
border:1px solid black;
float: left;
position: relative;
}
.my_block {
z-index: 105;
width:46px;
height:46px;
float: left;
position: relative;
border:1px solid red;
}
JavaScript
$(function() {
foo();
$('.my_block').draggable({
revert: "invalid",
stop: function() {
$(this).draggable('option', 'revert', 'invalid');
}
});
function foo() {
$('.block').droppable({
greedy: true,
accept: ".my_block",
// tolerance: "fit",
drop: function(ev, ui) {
ui.draggable.appendTo($(this)).removeAttr('style');
}
});
}
$('.my_block').droppable({
greedy: true,
tolerance: 'touch',
drop: function(event, ui) {
ui.draggable.draggable('option', 'revert', true);
}
});
});