拖着表现得很奇怪

时间:2014-06-05 08:29:58

标签: javascript html css

我创建了一个红色的div。使用鼠标光标我可以将它移动到屏幕上的任何位置。它很好而且很光滑。然后我决定在红色div.i中添加一个额外的橙色div使得定位“绝对”为红色div和橙色div的“亲戚”。我把橙色div放在红色div内,位置变化不顺畅。如果我点击橙色部分然后移动它是光滑但如果我剪下可见的红色部分并移动我的鼠标它是不平滑的。如何解决这个问题..

JSfiddle

<html>

<head>
    <style>
        * {
            margin: 0px;
            padding: 0px;
        }
        #mydiv {
            position: absolute;
            width: 100px;
            height: 100px;
            background-color: red;
            top: 300px;
            left: 200px;
        }
        #mid {
            position: relative;
            width: 40px;
            height: 40px;
            margin: 30px 30px;
            background-color: orange;
        }
    </style>
</head>

<body>
    <div id="mydiv">
        <div id="mid"></div>
    </div>
    <script>
        var gotit = false;
        var i, p, q;
        var divs = document.getElementById("mydiv");
        divs.addEventListener('mousedown', clipit, false);
        divs.addEventListener('mousemove', function (e) {
            moveit(e);
        }, false);
        divs.addEventListener('mouseup', unclip, false);
        divs.addEventListener('mouseout', unclip, false);

        function clipit() {
            i = divs.offsetLeft;
            gotit = true;

            p = e.clientX;
            q = e.clientY;
        }

        function moveit(e) {

            if (gotit == true) {

                if (e.clientX > divs.offsetLeft) {

                    divs.style.left = divs.offsetLeft + (e.clientX - p) + "px";
                    p = e.clientX;
                }
                if (e.clientY > divs.offsetTop) {
                    divs.style.top = divs.offsetTop + (e.clientY - q) + "px";
                    q = e.clientY;
                }
            }
        }

        function unclip() {
            gotit = false;

        }
    </script>

</body>

</html>

1 个答案:

答案 0 :(得分:1)

你忘了把事件放在剪辑中:

function clipit(e) {}

请记住始终检查您的控制台日志:

Uncaught ReferenceError: e is not defined 

fix