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中String类的subString()方法和slice()方法
May 24 Javascript
浅析jQuery中调用ajax方法时在不同浏览器中遇到的问题
Jun 11 Javascript
原生javascript实现隔行换色
Jan 04 Javascript
JQuery+Ajax实现数据查询、排序和分页功能
Sep 27 Javascript
概述一个页面从输入URL到页面加载完的过程
Dec 16 Javascript
JS中把函数作为另一函数的参数传递方法(总结)
Jun 28 Javascript
puppeteer库入门初探
Jan 09 Javascript
JS实现的杨辉三角【帕斯卡三角形】算法示例
Feb 26 Javascript
jquery+php后台实现省市区联动功能示例
May 23 jQuery
详解Vue 换肤方案验证
Aug 28 Javascript
在vue中利用v-html按分号将文本换行的例子
Nov 14 Javascript
JavaScript实现拖动对话框效果的实现代码
Oct 12 Javascript
详解为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
使用phpQuery获取数组的实例
2017/03/13 PHP
PHP中include和require的区别实例分析
2017/05/07 PHP
PHP设计模式之状态模式定义与用法详解
2018/04/02 PHP
AJAX架构之Dojo篇
2007/04/10 Javascript
json格式化/压缩工具 Chrome插件扩展版
2010/05/25 Javascript
getJSON调用后台json数据时函数被调用两次的原因猜想
2013/09/29 Javascript
JS方法调用括号的问题探讨
2014/01/24 Javascript
javascript文件中引用依赖的js文件的方法
2014/03/17 Javascript
JavaScript插件化开发教程 (三)
2015/01/27 Javascript
一个极为简单的requirejs实现方法
2016/10/20 Javascript
angularjs+bootstrap菜单的使用示例代码
2017/03/07 Javascript
浅谈Vuex@2.3.0 中的 state 支持函数申明
2017/11/22 Javascript
nodejs实现简单的gulp打包
2017/12/21 NodeJs
微信小程序select下拉框实现效果
2019/05/15 Javascript
微信小程序之 catalog 切换实现解析
2019/09/12 Javascript
微信小程序实现组件顶端固定或底端固定效果(不随滚动而滚动)
2020/04/09 Javascript
[05:31]干嘛呢兄弟!DOTA2 TI9语音轮盘部分出处
2019/05/14 DOTA
python编程培训 python培训靠谱吗
2018/01/17 Python
pandas将DataFrame的列变成行索引的方法
2018/04/10 Python
pandas DataFrame 根据多列的值做判断,生成新的列值实例
2018/05/18 Python
Python3爬虫学习之将爬取的信息保存到本地的方法详解
2018/12/12 Python
Python分支语句与循环语句应用实例分析
2019/05/07 Python
Python+PyQT5的子线程更新UI界面的实例
2019/06/14 Python
Python read函数按字节(字符)读取文件的实现
2019/07/03 Python
CSS3 函数技巧 用css 实现js实现的事情(clac Counters Tooltip)
2017/08/15 HTML / CSS
HTML5实时语音通话聊天MP3压缩传输3KB每秒
2019/08/28 HTML / CSS
美国在线咖啡、茶和餐厅供应商:LollicupStore
2018/05/04 全球购物
什么是类的返射机制
2016/02/06 面试题
Java里面如何创建一个内部类的实例
2015/01/19 面试题
下面这个程序执行后会有什么错误或者效果
2014/11/03 面试题
大学在校生求职信范文
2013/11/21 职场文书
《寓言两则》教学反思
2014/02/27 职场文书
2014最新预备党员思想汇报范文:中国梦,我的梦
2014/10/25 职场文书
教师学习中国梦心得体会
2016/01/05 职场文书
2016年机关单位节能宣传周活动总结
2016/04/05 职场文书
nginx处理http请求实现过程解析
2021/03/31 Servers