博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
分享一个通过面向对象方式完成的拖拽功能
阅读量:4985 次
发布时间:2019-06-12

本文共 1946 字,大约阅读时间需要 6 分钟。

研究了两天的JS面向对象了,然后根据视频完成了一个简单的拖拽功能。下面的代码其实很简单,唯一需要注意的就是 this ,感觉JS中的this还是很奇妙很有意思的,接下来学习就研究this指针好啦 。

下面是拖拽的代码

Drag.js

function Drag(id){    var _this = this;    this.divX = 0;    this.divY = 0;    this.oDiv = document.getElementById(id);    this.oDiv.onmousedown = function(ev){        _this.fnMouseDown(ev);    }}Drag.prototype.fnMouseDown = function(ev){    var _this = this;    var oEvent = ev||event;    this.divX = oEvent.clientX - this.oDiv.offsetLeft;    this.divY = oEvent.clientY - this.oDiv.offsetTop;    document.onmousemove = function(ev){        _this.fnMouseMove(ev);        return false;//取消选中    };    document.onmouseup = function(){        _this.fnMouseUp();    }}Drag.prototype.fnMouseMove = function(ev){    var oEvent = ev||event;    this.oDiv.style.left = oEvent.clientX - this.divX+'px';    this.oDiv.style.top = oEvent.clientY- this.divY+'px';}Drag.prototype.fnMouseUp = function(){    document.onmousemove = null;    document.onmousedown = null;}

 

LimitDrag.js //限制范围的拖拽

/** * Created by Administrator on 2015/12/29 0029. */function LimitDrag (id){    Drag.call(this,id);}for(var i in Drag.prototype){    LimitDrag.prototype[i] = Drag.prototype[i];}//重写 MouseMove 函数LimitDrag.prototype.fnMouseMove = function(ev){    var oEvent = ev||event;    var left = oEvent.clientX - this.divX;    var top = oEvent.clientY - this.divY    if(left<0){        left = 0;    }else if(left >document.documentElement.clientWidth - this.oDiv.offsetWidth){        left= document.documentElement.clientWidth - this.oDiv.offsetWidth;    }    if(top<0){        top = 0;    }else if(top > document.documentElement.clientHeight - this.oDiv.offsetHeight){        top =  document.documentElement.clientHeight - this.oDiv.offsetHeight    }    this.oDiv.style.left = left+'px';    this.oDiv.style.top = top+'px';}

HTML

    
Title
Drag
LimitDrag

 

转载于:https://www.cnblogs.com/laobeiV5/p/5106644.html

你可能感兴趣的文章
poj 1459 最大流
查看>>
js 运算符优先级
查看>>
SDWebimage加载图片,循环滚动轮播图和pagecontrol
查看>>
ARMV7-M数据手册---Part A :Application Level Architecture---A1 Introduction
查看>>
Jmeter 使用技巧 (如何在linux下运行jmeter视窗界面呢)-jmeter如何模拟http发送gzip数据...
查看>>
第一个爬虫
查看>>
通知中心
查看>>
HW4.13
查看>>
careercup-数学与概率 7.5
查看>>
Android app的文件缓存目录
查看>>
Linux服务器安全加固
查看>>
周记 2015.05.30
查看>>
Firebug入门指南(转)
查看>>
codeforces 652B B. z-sort(水题)
查看>>
Jenkins在Windows系统dotnet平台持续集成
查看>>
移动开发一站式解决方案
查看>>
云计算下PAAS的解析一
查看>>
ie6下用css来实现hover效果
查看>>
2017-2018-1 20155220 第一周《信息安全系统设计基础》学习总结
查看>>
VS/Github/Gitlab/csproj的问题笔记
查看>>