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中的数学函数
Apr 04 Javascript
js加解密 脚本解密
Feb 22 Javascript
JavaScript 字符串乘法
Aug 20 Javascript
第三章之Bootstrap 表格与按钮功能
Apr 25 Javascript
jQuery+ajax简单实现文件上传的方法
Jun 03 Javascript
js仿小米手机上下滑动效果
Feb 05 Javascript
javascript过滤数组重复元素的实现方法
May 03 Javascript
详解基于Node.js的微信JS-SDK后端接口实现代码
Jul 15 Javascript
原生js实现移动端触摸轮播的示例代码
Dec 22 Javascript
vue项目移动端实现ip输入框问题
Mar 19 Javascript
layui对工具条进行选择性的显示方法
Sep 19 Javascript
jQuery实现图片切换效果
Oct 19 jQuery
详解为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中设置多级目录session的问题
2011/08/08 PHP
php引用传值实例详解学习
2013/11/06 PHP
php版淘宝网查询商品接口代码示例
2014/06/17 PHP
php验证手机号码
2015/11/11 PHP
Firefox中beforeunload事件的实现缺陷浅析
2012/05/03 Javascript
浅谈Jquery为元素绑定事件
2015/04/27 Javascript
jquery trigger函数执行两次的解决方法
2016/02/29 Javascript
JS图片等比例缩放方法完整示例
2016/08/03 Javascript
Node.js v8.0.0正式发布!看看带来了哪些主要新特性
2017/06/02 Javascript
老生常谈js数据类型
2017/08/03 Javascript
webpack组织模块打包Library的原理及实现
2018/03/10 Javascript
在vue中使用express-mock搭建mock服务的方法
2018/11/07 Javascript
Vue在H5 项目中使用融云进行实时个人单聊通讯
2020/12/14 Vue.js
[07:31]DOTA2卡尔工作室 英雄介绍主宰篇
2013/06/25 DOTA
python字符串加密解密的三种方法分享(base64 win32com)
2014/01/19 Python
在Python的Django框架的视图中使用Session的方法
2015/07/23 Python
Django将默认的SQLite更换为MySQL的实现
2019/11/18 Python
pygame库实现移动底座弹球小游戏
2020/04/14 Python
Python实现随机生成任意数量车牌号
2020/01/21 Python
利用PyQt5+Matplotlib 绘制静态/动态图的实现代码
2020/07/13 Python
详细分析Python collections工具库
2020/07/16 Python
HTML5 Canvas图像模糊完美解决办法
2018/02/06 HTML / CSS
5分钟弄清楚html5的drag and drop(小结)
2019/04/10 HTML / CSS
html5实现canvas阴影效果示例
2014/05/07 HTML / CSS
美国知名的百货清仓店:Neiman Marcus Last Call
2016/08/03 全球购物
Solaris操作系统的线程机制
2015/07/28 面试题
幼师专业毕业生自荐信
2013/09/29 职场文书
销售行政专员职责
2014/01/03 职场文书
会计职业生涯规划书
2014/01/13 职场文书
社会体育专业大学生职业生涯规划书
2014/09/17 职场文书
住宿生擅自离校检讨书
2014/09/22 职场文书
第二批党的群众路线教育实践活动个人整改方案
2014/10/31 职场文书
HTML5 新增内容和 API详解
2021/11/17 HTML / CSS
用Python实现屏幕截图详解
2022/01/22 Python
2022年四月新番
2022/03/15 日漫
SpringCloud Feign请求头删除修改的操作代码
2022/03/20 Java/Android