JS基于面向对象实现的拖拽功能示例


Posted in Javascript onDecember 20, 2016

本文实例讲述了JS基于面向对象实现的拖拽功能。分享给大家供大家参考,具体如下:

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<style>
#div1 {width:100px; height:100px; background:red; position:absolute;}
#div2 {width:100px; height:100px; background:yellow; position:absolute;}
</style>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
<script>
window.onload=function(){
  new Drag("div1");
  new Drag("div2");
}
function Drag(id)
{
  var _this=this;
  this.oDiv=document.getElementById(id);
  this.disX=0;
  this.disY=0;
  this.oDiv.onmousedown=function(ev){
    _this.fnDown(ev);
    return false;
  };
}
  Drag.prototype.fnDown=function(ev)
  {
    var _this=this;
    var oEvent=ev||event;
    this.disX=oEvent.clientX-this.oDiv.offsetLeft;
    this.disY=oEvent.clientY-this.oDiv.offsetTop;
    document.onmousemove=function(ev){
      _this.fnMove(ev);
    };
    document.onmouseup=function(){
      _this.fnUp();
    };
  };
  Drag.prototype.fnMove=function(ev)
  {
    var oEvent=ev||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.oDiv.offsetWidth)
    {
      l=document.documentElement.clientWidth-this.oDiv.offsetWidth;
    }
    if(t<0)
    {
      t=0;
    }
    else if(t>document.documentElement.clientHeight-this.oDiv.offsetHeight)
    {
      t=document.documentElement.clientHeight-this.oDiv.offsetHeight;
    }
    this.oDiv.style.left=l+'px';
    this.oDiv.style.top=t+'px';
  };
  Drag.prototype.fnUp=function()
  {
    document.onmousemove=null;
    document.onmouseup=null;
  };
</script>
</head>
<body>
<div id="div1"></div>
<div id="div2"></div>
</body>
</html>

继承

function LimitDrag(id){
  Drag.call(this,id); //继承属性
}
for(var i in Drag.prototype){
  LimitDrag.prototype[i]=Drag.prototype[i];
}

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
javascript多种数据类型表格排序代码分析
Sep 11 Javascript
jquery动画1.加载指示器
Aug 24 Javascript
js倒计时小程序
Nov 05 Javascript
js的正则test,match,exec详细解析
Jan 29 Javascript
动态显示可输入的字数提示还可以输入的字数
Apr 01 Javascript
jQuery入门基础知识学习指南
Aug 14 Javascript
js针对ip地址、子网掩码、网关的逻辑性判断
Jan 06 Javascript
详解vue-cli脚手架build目录中的dev-server.js配置文件
Nov 24 Javascript
在 Linux/Unix 中不重启 Vim 而重新加载 .vimrc 文件的流程
Mar 21 Javascript
使用Vue制作图片轮播组件思路详解
Mar 21 Javascript
Vue 组件注册实例详解
Feb 23 Javascript
vue+django实现下载文件的示例
Mar 24 Vue.js
详解为Angular.js内置$http服务添加拦截器的方法
Dec 20 #Javascript
[Bootstrap-插件使用]Jcrop+fileinput组合实现头像上传功能实例代码
Dec 20 #Javascript
JS简单实现表格排序功能示例
Dec 20 #Javascript
深入了解JavaScript的逻辑运算符(与、或)
Dec 20 #Javascript
js定时器实例分享
Dec 20 #Javascript
BootStrap Table 获取同行不同列元素的方法
Dec 19 #Javascript
Jquery Easyui进度条组件Progress使用详解(8)
Mar 26 #Javascript
You might like
利用php+mcDropdown实现文件路径可在下拉框选择
2013/08/07 PHP
php通过array_unshift函数添加多个变量到数组前端的方法
2015/03/18 PHP
php将图片保存为不同尺寸图片的图片类实例
2015/03/30 PHP
PHP封装的HttpClient类用法实例
2015/06/17 PHP
php微信公众平台开发(四)回复功能开发
2016/12/06 PHP
jquery ready函数源代码研究
2009/12/06 Javascript
js实现的真正的iframe高度自适应(兼容IE,FF,Opera)
2010/03/07 Javascript
制作高质量的JQuery Plugin 插件的方法
2010/04/20 Javascript
javascript学习笔记--数字格式类型
2014/05/22 Javascript
解析javascript中鼠标滚轮事件
2015/05/26 Javascript
跟我学习javascript的执行上下文
2015/11/18 Javascript
BootStrap导航栏问题记录
2017/07/31 Javascript
微信小程序movable view移动图片和双指缩放实例代码
2017/08/08 Javascript
javascript 通过键名获取键盘的keyCode方法
2017/12/31 Javascript
webpack4打包vue前端多页面项目
2018/09/17 Javascript
vue-cli 3 全局过滤器的实例代码详解
2019/06/03 Javascript
IE11下处理Promise及Vue的单项数据流问题
2019/07/24 Javascript
Vue中使用matomo进行访问流量统计的实现
2019/11/05 Javascript
微信内置开发 iOS修改键盘换行为搜索的解决方案
2019/11/06 Javascript
javascript的hashCode函数实现代码小结
2020/08/11 Javascript
python看某个模块的版本方法
2018/10/16 Python
使用python3 实现插入数据到mysql
2020/03/02 Python
Scrapy项目实战之爬取某社区用户详情
2020/09/17 Python
windows系统Tensorflow2.x简单安装记录(图文)
2021/01/18 Python
Python绘制数码晶体管日期
2021/02/19 Python
在c#中using和new这两个关键字有什么意义
2013/05/19 面试题
信息学院毕业生自荐信范文
2014/03/04 职场文书
领导干部民主生活会自我剖析材料范文
2014/09/20 职场文书
小学生国庆65周年演讲稿范文(2篇)
2014/09/21 职场文书
2015年保洁工作总结范文
2015/04/28 职场文书
2015年团委副书记工作总结
2015/07/23 职场文书
2016年小学党支部创先争优活动总结
2016/04/05 职场文书
python如何正确使用yield
2021/05/21 Python
详解Redis基本命令与使用场景
2021/06/01 Redis
Python中文纠错的简单实现
2021/07/07 Python
关于Vue中的options选项
2022/03/22 Vue.js