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 相关文章推荐
jQuery each()小议
Mar 18 Javascript
微信小程序 WXDropDownMenu组件详解及实例代码
Oct 24 Javascript
JavaScript易错知识点整理
Dec 05 Javascript
微信开发之调起摄像头、本地展示图片、上传下载图片实例
Dec 08 Javascript
详解javascript获取url信息的常见方法
Dec 19 Javascript
解决betterScroll在vue中存在图片时,出现拉不动的问题
Sep 27 Javascript
深入了解JavaScript 防抖和节流
Sep 12 Javascript
vue 实现模糊检索并根据其他字符的首字母顺序排列
Sep 19 Javascript
javascript实现摄像头拍照预览
Sep 30 Javascript
详解利用eventemitter2实现Vue组件通信
Nov 04 Javascript
JavaScript实现4位随机验证码的生成
Jan 28 Javascript
什么是SOLID
Mar 24 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
PHP实现C#山寨ArrayList的方法
2015/07/16 PHP
浅析Yii2 gridview实现批量删除教程
2016/04/22 PHP
php简单实现多维数组排序的方法
2016/09/30 PHP
用按钮控制iframe显示的网页实现方法
2013/02/04 Javascript
浅析offsetLeft,Left,clientLeft之间的区别
2013/11/30 Javascript
JS实现的N多简单无缝滚动代码(包含图文效果)
2015/11/06 Javascript
JavaScript reduce和reduceRight详解
2016/10/24 Javascript
JavaScript关联数组用法分析【概念、定义、遍历】
2017/03/15 Javascript
easyui关于validatebox实现多重规则验证的方法(必看)
2017/04/12 Javascript
javascript实现延时显示提示框效果
2017/06/01 Javascript
bootstrap-table.js扩展分页工具栏(增加跳转到xx页)功能
2017/12/28 Javascript
js正则取值的结果数组调试方法
2018/10/10 Javascript
vue最简单的前后端交互示例详解
2018/10/11 Javascript
使用RxJS更优雅地进行定时请求详析
2019/06/02 Javascript
使用easyui从servlet传递json数据到前端页面的两种方法
2019/09/05 Javascript
解决antd 下拉框 input [defaultValue] 的值的问题
2020/10/31 Javascript
python使用socket创建tcp服务器和客户端
2018/04/12 Python
python3用PIL把图片转换为RGB图片的实例
2019/07/04 Python
python文档字符串(函数使用说明)使用详解
2019/07/30 Python
在Python中预先初始化列表内容和长度的实现
2019/11/28 Python
Python面向对象之多态原理与用法案例分析
2019/12/30 Python
pytorch加载语音类自定义数据集的方法教程
2020/11/10 Python
python小技巧——将变量保存在本地及读取
2020/11/13 Python
英国汽车座椅和婴儿车购物网站:Uber Kids
2017/04/19 全球购物
Hotter Shoes英国官网:英伦风格,舒适的鞋子
2017/12/28 全球购物
哈利波特商店:Harry Potter Shop
2018/11/30 全球购物
美国肌肉和力量商店:Muscle & Strength
2019/06/22 全球购物
DC Shoes俄罗斯官网:美国滑板鞋和服饰品牌
2020/08/19 全球购物
美国在线肉类和海鲜配送:Crowd Cow
2020/10/02 全球购物
迪士尼法国在线商店:shopDisney FR
2020/12/03 全球购物
香港艺人陈冠希创办的潮流品牌:JUICESTORE
2021/03/04 全球购物
UNIX文件系统分类
2014/11/11 面试题
复核员上岗演讲稿
2014/01/05 职场文书
食品安全工作实施方案
2014/03/26 职场文书
租赁协议书
2015/01/27 职场文书
人事行政助理岗位职责
2015/04/11 职场文书