码迷,mamicode.com
首页 > Web开发 > 详细

原生js实现 拖拽事件

时间:2018-10-14 21:03:35      阅读:200      评论:0      收藏:0      [点我收藏+]

标签:height   back   cts   class   tst   color   end   sel   line   

<!DOCTYPE html>
<html>

    <head>
        <meta charset="UTF-8">
        <title></title>
        <style type="text/css">
            .box {
                width: 200px;
                height: 200px;
                background-color: #000000;
                position: absolute;
                left: 0;
                top: 0;
                color: #FFFFFF;
                line-height: 200px;
                font-size: 20px;
                cursor: move;
            }
        </style>
    </head>

    <body>
        <div id="box" class="box">
            拖拽事件,文字选中
        </div>
        <script type="text/javascript">
            window.onload = function() {
                var oBox = document.getElementById("box");
                //修正文字选中问题
                oBox.onselectstart = function() {
                    return false;
                }
                oBox.ondragstart = function() {
                    return false;
                }
                oBox.onmousedown = function(e) {
                    var top = this.offsetTop;
                    var left = this.offsetLeft;
                    //起点
                    var originX = e.clientX;
                    var originY = e.clientY;
                    document.onmousemove = function(e) {
                        var endX = e.clientX;
                        var endY = e.clientY;
                        //X轴、Y轴移动距离
                        var distanceX = endX - originX;
                        var distanceY = endY - originY;

                        oBox.style.left = (left + distanceX) + "px";
                        oBox.style.top = (top + distanceY) + "px";
                    }
                }
                //移除move事件
                document.onmouseup = function() {
                    document.onmousemove = null;
                }
                //鼠标移动mouseover
                oBox.onmousemove = function(e) {
                    //box宽度高度
                    var width = this.offsetWidth;
                    var height = this.offsetHeight;
                    //box的top/left
                    var top = this.offsetTop;
                    var left = this.offsetLeft;
                    //鼠标坐标
                    var mouseX = e.clientX;
                    var mouseY = e.clientY;
                    //最大坐标X,最大坐标Y
                    var maxX = left + width;
                    var maxY = top + height;
                    if(maxX - mouseX < 10 && maxY - mouseY < 10) {
                        this.style.cursor = "nw-resize";
                    } else {
                        this.style.cursor = "move";
                    }

                }

            }
        </script>
       
    </body>

</html>

 

原生js实现 拖拽事件

标签:height   back   cts   class   tst   color   end   sel   line   

原文地址:https://www.cnblogs.com/150536FBB/p/9787419.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!