JSFiddle - React, Tailwind, and code Playground
by stevea
HTML
<div id='box1' class='drag'></div>
<div id='box2' class='drag'></div>
<div id='box3' class='drag'></div>
<div id='box4' class='drag'></div>
<div class='all'></div>
CSS
.drag {
position: absolute;
float:left;
width: 100px;
height: 100px;
background: light-green;
margin: 5px;
z-index: 100
}
#box1 {
left:0;
}
#box2 {
left:150;
}
#box3 {
left:300;
}
#box4 {
left:450;
}
.all {
width: 100%;
height: 100%;
z-index: -1;
position: absolute;
}
JavaScript
$('.drag').draggable();
$('.drag').click(function(){
// debugger;
console.log(this, 'clicked')
var data = $(this).data('clicked');
var all = $('.all');
if(data == undefined || data == false){
$(this).data('clicked', true);
this.style.background = 'red';
$(this).draggable('disable');
if(all.children().length <= 0){
all.draggable().css({
top: '0px',
left: '0px',
width: $(window).width(),
height: $(window).height(),
'z-index': 1
});
}
debugger;
var top = parseInt(all.css('top').replace('px','')) +
parseInt($(this).css('top').replace('px',''))
var left = parseInt(all.css('left').replace('px','')) +
parseInt($(this).css('left').replace('px',''))
$(this).css({
top: top,
left: left
})
$('.all').append($(this));
}
else {
$(this).data('clicked', false);
this.style.background = 'grey';
$(this).draggable('enable');
$('body').append($(this));
if(all.children() <= 0){
all.draggable('destroy');
}
/*
var top = parseInt(all.css('top').replace('px','')) -
parseInt($(this).css('top').replace('px',''))
var left = parseInt(all.css('left').replace('px','')) -
parseInt($(this).css('left').replace('px',''))
$(this).css({
top: top,
left: left
})*/
}
})