zoukankan      html  css  js  c++  java
  • 基于继承的拖拽

     1     window.onload = function() {
     2         new Drag("div1");
     3         new LimitDrag("div2");
     4     };
     5 
     6     //父类
     7     function Drag(id) {
     8         var _this = this;
     9 
    10         this.disX = 0;
    11         this.disY = 0;
    12         this.oDiv = document.getElementById(id);
    13 
    14         this.oDiv.onmousedown = function() {
    15             _this.fnDown();
    16         };
    17     }
    18 
    19     Drag.prototype.fnDown = function(ev) {
    20         var _this = this;
    21 
    22         var oEvent = ev || event;
    23         this.disX = oEvent.clientX - this.oDiv.offsetLeft;
    24         this.disY = oEvent.clientY - this.oDiv.offsetTop;
    25 
    26         document.onmousemove = function() {
    27             _this.fnMove();
    28         };
    29 
    30         document.onmouseup = function() {
    31             _this.fnUp();
    32         };
    33 
    34         //兼容FF
    35         return false;
    36     };
    37 
    38     Drag.prototype.fnMove = function(ev) {
    39         var oEvent = ev || event;
    40 
    41         var l = oEvent.clientX - this.disX;
    42         var t = oEvent.clientY - this.disY;
    43 
    44         this.oDiv.style.left = l + "px";
    45         this.oDiv.style.top = t + "px";
    46     };
    47 
    48     Drag.prototype.fnUp = function(ev) {
    49         document.onmousemove = null;
    50         document.onmouseup = null;
    51     };
    52 
    53     //子类
    54     function LimitDrag(id) {
    55         Drag.call(this, id);
    56     }
    57 
    58     //继承父类的属性和方法
    59     for (var i in Drag.prototype) {
    60         LimitDrag.prototype[i] = Drag.prototype[i];
    61     }
    62 
    63     //重写父类的方法
    64     LimitDrag.prototype.fnMove = function(ev) {
    65         var oEvent = ev || event;
    66 
    67         var l = oEvent.clientX - this.disX;
    68         var t = oEvent.clientY - this.disY;
    69 
    70         if (l < 0) {
    71             l = 0;
    72         } else if (l > document.documentElement.clientWidth - this.oDiv.offsetWidth) {
    73             l = document.documentElement.clientWidth - this.oDiv.offsetWidth;
    74         }
    75 
    76         if (t < 0) {
    77             t = 0;
    78         } else if (t > document.documentElement.clientHeight - this.oDiv.offsetHeight) {
    79             t = document.documentElement.clientHeight - this.oDiv.offsetHeight;
    80         }
    81 
    82         this.oDiv.style.left = l + "px";
    83         this.oDiv.style.top = t + "px";
    84     };
  • 相关阅读:
    描述一下 JVM 加载 class 文件的原理机制?
    Java 中会存在内存泄漏吗,请简单描述
    关于同步机制的一些见解
    Mybatis 一对一,一对多,多对一,多对多的理解
    关于JavaBean实现Serializable接口的见解
    Python 文件I/O
    Python 模块
    Python 函数
    Python time tzset()方法
    Python time time()方法
  • 原文地址:https://www.cnblogs.com/HuoAA/p/5074160.html
Copyright © 2011-2022 走看看