JSFiddle - React, Tailwind, and code Playground

by frapporti

HTML

<div class="draggable" data-dragDirection="horizontal">horizontal</div>
<div class="draggable" data-dragDirection="vertical">vertical</div>

<div class="draggable">both</div>

CSS

.draggable {
    height: 130px;
    width: 150px;
    background: #ccc;
    position: relative;
    cursor: pointer;
    border: 2px solid blue;
}

JavaScript

$(document).on("mousedown", ".draggable", dragElement );

function dragElement(e) {
    alert(e);
    document.addEventListener ("mousemove" , eleMouseMove , false);
}
/*
var ele = this;

var initX, initY = 0, first = true, motion;

ele.addEventListener ("mousedown" , eleMouseDown , false);

function eleMouseDown () {
    stateMouseDown = true;
    document.addEventListener ("mousemove" , eleMouseMove , false);
}

function eleMouseMove (ev) {
    var pX = ev.pageX;
    var pY = ev.pageY;

    if (first) {
        initX = ev.offsetX;
        initY = ev.offsetY;
        first = false;
    }
    
    motion = 'translateX(' + Number(pX - initX) + 'px) translateY(' + Number(pY - initY) + 'px) translateZ(0)';
    
    ele.style.webkitTransform =
    ele.style.msTransform = 
    ele.style.MozTransform = motion;

    document.addEventListener ("mouseup" , eleMouseUp , false);
}

function eleMouseUp () {
    document.removeEventListener ("mousemove" , eleMouseMove , false);
    document.removeEventListener ("mouseup" , eleMouseUp , false);
    initX = initY = 0, first = true;
}
    
});