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中创建对象和继承示例解读
Feb 12 Javascript
Jquery EasyUI中弹出确认对话框以及加载效果示例代码
Feb 13 Javascript
JQuery实现table行折叠效果以JSON做数据源
May 26 Javascript
谷歌浏览器调试JavaScript小技巧
Dec 29 Javascript
TypeScript Type Innference(类型判断)
Mar 10 Javascript
Javascript中判断一个值是否为undefined的方法详解
Sep 28 Javascript
利用select实现年月日三级联动的日期选择效果【推荐】
Dec 13 Javascript
JS之if语句对接事件动作逻辑(详解)
Jun 28 Javascript
jQuery实现checkbox即点即改批量删除及中间遇到的坑
Nov 11 jQuery
卸载vue2.0并升级vue_cli3.0的实例讲解
Feb 16 Javascript
vue随机验证码组件的封装实现
Feb 19 Javascript
vue 实现一个简单的全局调用弹窗案例
Sep 10 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下安装配置fckeditor编辑器的方法
2011/03/02 PHP
PHP设计模式 注册表模式
2012/02/05 PHP
php连接mssql的一些相关经验及注意事项
2013/02/05 PHP
PHP设计模式之简单投诉页面实例
2016/02/24 PHP
微信利用PHP创建自定义菜单的方法
2016/08/01 PHP
Yii框架连表查询操作示例
2019/09/06 PHP
利用JS自动打开页面上链接的实现代码
2011/09/25 Javascript
jquery五角星评分插件示例分享
2014/02/21 Javascript
vue实现简单实时汇率计算功能
2017/01/15 Javascript
详解vue父子模版嵌套案例
2017/03/04 Javascript
vue+mockjs模拟数据实现前后端分离开发的实例代码
2017/08/08 Javascript
vue-cli脚手架config目录下index.js配置文件的方法
2018/03/13 Javascript
详解koa2学习中使用 async 、await、promise解决异步的问题
2018/11/13 Javascript
微信小程序遍历Echarts图表实现多个饼图
2019/04/25 Javascript
vue 检测用户上传图片宽高的方法
2020/02/06 Javascript
JS实现百度搜索框关键字推荐
2020/02/17 Javascript
vue项目如何监听localStorage或sessionStorage的变化
2021/01/04 Vue.js
分享Python文本生成二维码实例
2016/01/06 Python
深入理解NumPy简明教程---数组3(组合)
2016/12/17 Python
python使用正则表达式替换匹配成功的组并输出替换的次数
2017/11/22 Python
Python线性拟合实现函数与用法示例
2018/12/13 Python
Python中一般处理中文的几种方法
2019/03/06 Python
解决python super()调用多重继承函数的问题
2019/06/26 Python
浅析Python 条件控制语句
2020/07/15 Python
Python爬虫新手入门之初学lxml库
2020/12/20 Python
canvas生成带二维码海报的踩坑记录
2019/09/11 HTML / CSS
Etam德国:内衣精品店
2019/08/25 全球购物
毕业生怎样写好自荐信
2013/11/11 职场文书
2015年幼儿园毕业感言
2014/02/12 职场文书
精神文明建设先进工作者事迹材料
2014/05/02 职场文书
纪念九一八爱国演讲稿600字
2014/09/14 职场文书
三方股份合作协议书
2014/10/13 职场文书
保险公司客户经理岗位职责
2015/04/09 职场文书
就业证明函
2015/06/17 职场文书
六年级上册《闻官军收河南河北》的教学设计
2019/11/15 职场文书
电脑无法安装Windows 11怎么办?无法安装Win11的解决方法
2021/11/21 数码科技