JSFiddle - React, Tailwind, and code Playground

by zhangchi

HTML

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        .rect {
            width: 200px;
            height: 200px;
        }

        #blue {
            background-color: blue;
        }

        #red {
            background-color: red;
        }

        #green {
            background-color: green;
        }
    </style>
</head>

<body>
    <div class="rect" id="blue"></div>
    <div class="rect" id="red"></div>
    <div class="rect" id="green"></div>
    <script>
        function enableAllElDrag() {
            let startDrag = true;
            let dragTargetEl = null;

            document.querySelectorAll('*').forEach((item) => {
                item.addEventListener('mousedown', (evt) => {
                    evt.stopPropagation();
                    // debugger;
                    startDrag = true;
                    dragTargetEl = evt.currentTarget;
                })
                item.addEventListener('mouseup', (evt) => {
                    evt.stopPropagation();
                    startDrag = false;
                    dragTargetEl = null;
                })
            })
            let lastX;
            let lastY;
            window.addEventListener('mousemove', (evt) => {
                if (startDrag && dragTargetEl) {
                    dragTargetEl.style.position = 'fixed';
                   
                    if (!dragTargetEl.style.left) {
                        lastX = evt.x;
                        lastY = evt.y;
                        dragTargetEl.style.left = dragTargetEl.offsetLeft + 'px';
                        dragTargetEl.style.top = dragTargetEl.offsetTop + 'px';
                    } else {
                        dragTargetEl.style.left = dragTargetEl.offsetLeft + evt.x - lastX + 'px';
                        dragTargetEl.style.top = dragTargetEl.offsetTop + evt.y - lastY + 'px';
...