zoukankan      html  css  js  c++  java
  • 拖拽-原型继承案例

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
        <style>
            /* 为两个div添加样式 */
            #box1{ 100px;height: 100px;background: red;position: absolute;left: 0;top: 0;}
            #box2{ 100px;height: 100px;background: blue;position: absolute;left: 0;top: 150px;}
        </style>
    </head>
    <body>
        <!-- 创建两个div标签 -->
        <div id="box1"></div>
        <div id="box2"></div>
    </body>
    <script>
        //1.创建构造函数:
        function Drag(ele){
            this.ele = ele;
            //提前将,未来的事件处理函数中的this指向修复,得到修复之后的新函数,用来绑定或删除使用
            this.m = this.move.bind(this);
            this.u = this.up.bind(this);
            this.addEvent();
        }
        //给元素绑定鼠标事件:
        Drag.prototype.addEvent = function(){
            var that = this;
            this.ele.addEventListener("mousedown",function(eve){
                that.downE = eve || window.event;
                document.addEventListener("mousemove",that.m);
                document.addEventListener("mouseup",that.u);
            })
        }
        //鼠标移动事件:
        Drag.prototype.move = function(eve){
            let moveE = eve || window.event;
            this.ele.style.left = moveE.clientX - this.downE.offsetX + "px";
            this.ele.style.top = moveE.clientY - this.downE.offsetY + "px";
        }
        //鼠标抬起事件:
        Drag.prototype.up = function(){
            document.removeEventListener("mousemove",this.m);
            document.removeEventListener("mouseup",this.u)
        }
        //创建构造函数:
        function SmallDrag(ele){
            Drag.call(this,ele);
        }
        SmallDrag.prototype = Object.create(Drag.prototype);
        SmallDrag.prototype.move = function(eve){
            var moveE = eve || event;
            var l = moveE.clientX - this.downE.offsetX;
            var t = moveE.clientY - this.downE.offsetY;
            if(l<0) l=0;
            if(t<0) t =0;
            if(l>(document.documentElement.clientWidth- this.ele.offsetWidth)) l = document.documentElement.clientWidth- this.ele.offsetWidth;
            if(t>(document.documentElement.clientHeight- this.ele.offsetHeight)) t = document.documentElement.clientHeight- this.ele.offsetHeight
    
            this.ele.style.left = l + "px";
            this.ele.style.top = t + "px";
        }
    //获取标签:
    var obox1 = document.getElementById("box1");
    var obox2 = document.getElementById("box2");
    new Drag(obox1)
    new SmallDrag(obox2)
    </script>
    </html>
  • 相关阅读:
    javaBean为什么要实现Serializable接口?
    OpenLayers3的WMS空间查询实现多个图层
    (WPS) 网络地理信息处理服务
    window.open跳过浏览器拦截
    linux改权限
    element-ui MessageBox的bug
    element-ui上传文件带token
    MySQL启动出现The server quit without updating PID file错误解决办法
    重装应用商店
    vscode在vue-cli中按照ESlint自动格式化代码
  • 原文地址:https://www.cnblogs.com/yh-3175339026/p/13034532.html
Copyright © 2011-2022 走看看