zoukankan      html  css  js  c++  java
  • 拖放效果实例

    一、面向过程

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <title></title>
        <link rel="stylesheet" href="">
        <style type="text/css" media="screen">
             <style>
            * {
                margin: 0;
                padding: 0;
            }
            #div1 {
                position: absolute;
                width: 100px;
                height: 100px;
                cursor: move;
                background-color: red;
            }
        </style>
        </style>
    </head>
    <body>
        <div id="div1">
        </div>
    </body>
    </html>
    <script>
            window.onload = function () {
                //获取需要拖拽的div
                var div1 = document.getElementById("div1");
                //添加鼠标按下事件
                div1.onmousedown = function (evt) {
                    var oEvent = evt || event;
                    //获取按下鼠标到div left  top的距离
                    var distanceX = oEvent.clientX - div1.offsetLeft;
                    var distanceY = oEvent.clientX - div1.offsetTop;
                    //添加doc滑动时间
                    document.onmousemove = function (evt) {
                        var oEvent = evt || event;
                        //重新计算div的left top值
                        var left = oEvent.clientX - distanceX;
                        var top = oEvent.clientY - distanceY;
                        //left  当小于等于零时,设置为零 防止div拖出document之外
                        if (left <= 0) {
                            left = 0;
                        }
                        //当left 超过文档右边界  设置为右边界
                        else if (left >= document.documentElement.clientWidth - div1.offsetWidth) {
                            left = document.documentElement.clientWidth - div1.offsetWidth;
                        }
                        if (top <= 0) {
                            top = 0;
                        }
                        else if (top >= document.documentElement.clientHeight - div1.offsetHeight) {
                            top = document.documentElement.clientHeight - div1.offsetHeight;
                        }
                        //重新给div赋值
                        div1.style.top = top + "px";
                        div1.style.left = left + "px";
                    }
                    //添加鼠标抬起事件
                    div1.onmouseup = function () {
                        //清空事件
                        document.onmousemove = null;
                        div1.onmouseup = null;
                    }
                }
            }
        </script>

     

    二、面向对象

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <title></title>
        <link rel="stylesheet" href="">
        <style type="text/css">
            * {
                margin:0;
                padding:0;
            }
            #div1 {
                width: 100px;
                height: 100px;
                background-color: red;
            }
            #div2 {
                background-color:yellow;
                width:100px;
                height:100px;
            }
        </style>
    </head>
    <body>
        <div id="div1"></div>
    <div id="div2"></div>
    </body>
    </html>
    <script type="text/javascript">
        window.onload = function () {
            new Drag("div1");
            new Drag("div2");
        }
         function Drag(id) {
                this.div = document.getElementById(id);
                if (this.div) {
                    this.div.style.cursor = "move";
                    this.div.style.position = "absolute";
                }
                this.disX = 0;
                this.disY = 0;
                var _this = this;
                this.div.onmousedown = function (evt) {
                    _this.getDistance(evt);
                    document.onmousemove = function (evt) {
                        _this.setPosition(evt);
                    }
                    _this.div.onmouseup = function () {
                        _this.clearEvent();
                    }
                }
            }
            Drag.prototype.getDistance = function (evt) {
                var oEvent = evt || event;
                this.disX = oEvent.clientX - this.div.offsetLeft;
                this.disY = oEvent.clientY - this.div.offsetTop;
            }
            Drag.prototype.setPosition = function (evt) {
                var oEvent = evt || event;
                var l = oEvent.clientX - this.disX;
                var t = oEvent.clientY - this.disY;
                if (l <= 0) {
                    l = 0;
                }
                else if (l >= document.documentElement.clientWidth - this.div.offsetWidth) {
                    l = document.documentElement.clientWidth - this.div.offsetWidth;
                }
                if (t <= 0) {
                    t = 0;
                }
                else if (t >= document.documentElement.clientHeight - this.div.offsetHeight) {
                    t = document.documentElement.clientHeight - this.div.offsetHeight;
                }
                this.div.style.left = l + "px";
                this.div.style.top = t + "px";
            }
            Drag.prototype.clearEvent = function () {
                this.div.onmouseup = null;
                document.onmousemove = null;
            }
    </script>

  • 相关阅读:
    Camera2Raw
    ActiveNotifications
    百度检索技巧
    Android开发ScrollView上下左右滑动事件冲突整理一(根据事件)
    四种方案解决ScrollView嵌套ListView问题
    10 条提升 Android 性能的建议
    Android操作外置SD卡和U盘相关文章
    SQLServer通过链接服务器调用Oracle 存储过程
    Easy Image X2 快速分区-恢复镜像-万能驱动 一站式操作!
    纯净PE推荐——优启通 v3.3.2019.0605
  • 原文地址:https://www.cnblogs.com/xiaomili/p/6965021.html
Copyright © 2011-2022 走看看