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
        })*/
    }
})