• 拖拽-原型继承案例


    <!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>
  • 相关阅读:
    javascript语法之函数案例练习
    javascript语法之函数的定义
    javascript语法之with语句
    javascript语法之for-in语句
    javascript语法之循环语句小练习
    centos 7 配置samba mount
    Centos 7 systemd.service — Service unit configuration
    Linux 下使用 ffmpeg 大批量合并 ts 文件, mp4切割文件为m3u8
    Debian 系统修改网卡ens33名称为 eth0
    star_namelist
  • 原文地址:https://www.cnblogs.com/yh-3175339026/p/13034532.html
Copyright © 2020-2023  润新知