问答详情
源自:8-2 综合实战题

有答案吗??

有答案吗??

提问者:慕的地5225258 2017-05-04 22:46

个回答

  • 田心枫
    2017-05-04 22:48:47
    已采纳

    <!DOCTYPE html>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>慕课网-拖拽实现</title>
    <style type="text/css">
    
        #draggable{ width: 100px;height: 100px; position: absolute;top: 100px;left: 100px;border: 1px solid #ccc;background: #eee;padding: 10px;cursor: move;}
    
    </style>
    </head>
    <body>
    
    <div id="draggable">拖我</div>
    
    <script type="text/javascript">
        var oDrag = document.getElementById('draggable');
        var isDraging = false;
        var startX = 0;
        var startY = 0;
        oDrag.addEventListener('mousedown',function(e){
            //鼠标事件1 - 在标题栏按下(要计算鼠标相对拖拽元素的左上角的坐标 ,并且标记元素为可拖动)
            isDraging = true;
            startX = e.pageX - this.offsetLeft;
            startY = e.pageY - this.offsetTop;
        })
        document.onmouseup = function(e){
            //鼠标事件3 - 鼠标松开的时候(标记元素为不可拖动)
            isDraging = false;
        }
        document.onmousemove = function(e) {
            //鼠标事件2 - 鼠标移动时(要检测,元素是否标记为移动)
            var moveX = e.pageX - startX;
            var moveY = e.pageY - startY;
            var pageX = document.documentElement.clientWidth - oDrag.offsetWidth;
            var pageY = document.documentElement.clientHeight - oDrag.offsetHeight;
            moveX = Math.min(pageX, Math.max(0, moveX));
            moveY = Math.min(pageY, Math.max(0, moveY));
            if (isDraging) {
                oDrag.style.left = moveX + 'px';
                oDrag.style.top = moveY + 'px';
            }
        };
    </script>
    </body>
    </html>