JS可调整大小的div

时间:2018-09-07 02:39:52

标签: javascript html

我想创建div元素,其行为类似于在Windows桌面上单击和拖动。

到目前为止,我的代码执行以下操作:

        
  • 当页面检测到鼠标按下时,我们创建(只是将display:none的CSS样式更改为display:none)
    
  • 如果用户在向下移动鼠标的同时移动鼠标,则会修改div的大小。
  •     
  • 当用户释放鼠标按钮时,我们会隐藏div(显示:无)
  • 我的问题是调整大小部分。目前,div只能在东南方向上扩展。

    请参阅此Fiddle示例。

    试听Fiddle示例以了解我的意思(例如,不能垂直扩展到原点之外)。

    我认为原因是因为newXnewY为负值。我该怎么解决?

    1 个答案:

    答案 0 :(得分:2)

    您还没有考虑过鼠标移动坐标小于绘图开始坐标的情况,我对JS代码做了一些修改,

    var clientBox = document.getElementById("userBox");
    var startX, startY, currentX, curentY;
    
    function initRect(event) {
        startX = event.clientX;
        startY = event.clientY;
        window.addEventListener("mousemove", drawRect);
        window.addEventListener("mouseup", dstryRect);
    
    }
    
    function drawRect(event) {
        var width = event.clientX-startX;
        var height = event.clientY-startY;
        var x = startX;
        var y = startY;
        if (width < 0) {
            x = startX + width;
            width=-width;
        }
        if (height < 0) {
            y = startY + height;
            height = -height;
        }
        clientBox.style.display = "block";   // Hideen until click detected
        clientBox.style.top  = y + "px";
        clientBox.style.left = x + "px";
        clientBox.style.width = width + "px";
        clientBox.style.height = height + "px";
    }
    
    function dstryRect() {
        window.removeEventListener("mousemove", drawRect);
        window.removeEventListener("mouseup", dstryRect);
        clientBox.style.display = "none";
        clientBox.style.height = "0px";
        clientBox.style.width = "0px";
    }
    

    只需更新JS文件中的这些内容,即可完成。 这是工作中的fiddle 谢谢。

    相关问题
    最新问题