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 相关文章推荐
js Flash插入函数免激活代码
Mar 31 Javascript
javascript 面向对象编程 聊聊对象的事
Sep 17 Javascript
jquery选择器之层级过滤选择器详解
Jan 27 Javascript
javascript如何创建对象
Aug 29 Javascript
Javascript中arguments对象的详解与使用方法
Oct 04 Javascript
Bootstrap文件上传组件之bootstrap fileinput
Nov 25 Javascript
使用grunt合并压缩js和css文件的方法
Mar 02 Javascript
angularjs的单选框+ng-repeat的实现方法
Sep 12 Javascript
Vue filter格式化时间戳时间成标准日期格式的方法
Sep 16 Javascript
vue实现分页组件
Jun 16 Javascript
js实现鼠标滑动到某个div禁止滚动
Sep 17 Javascript
vue实现省市区联动 element-china-area-data插件
Apr 22 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新手上路(五)
2006/10/09 PHP
PHP实现货币换算的方法
2014/11/29 PHP
PHP中error_log()函数的使用方法
2015/01/20 PHP
php关键字仅替换一次的实现函数
2015/10/29 PHP
Paypal实现循环扣款(订阅)功能
2017/03/23 PHP
PHP实现查询手机归属地的方法详解
2017/04/28 PHP
jQuery EasyUI 开源插件套装 完全替代ExtJS
2010/03/24 Javascript
基于mootools 1.3框架下的图片滑动效果代码
2011/04/22 Javascript
javascript间隔定时器(延时定时器)学习 间隔调用和延时调用
2014/01/13 Javascript
使用CoffeeScrip优美方式编写javascript代码
2015/10/28 Javascript
jquery操作select元素和option的实例代码
2016/02/03 Javascript
js剪切板应用clipboardData实例解析
2016/05/29 Javascript
浅谈window.onbeforeunload() 事件调用ajax
2016/06/29 Javascript
jquery  实现轮播图详解及实例代码
2016/10/12 Javascript
微信小程序-图片、录音、音频播放、音乐播放、视频、文件代码实例
2016/11/22 Javascript
如何使用headjs来管理和异步加载js
2016/11/29 Javascript
简单的jQuery拖拽排序效果的实现(增强动态)
2017/02/09 Javascript
nodejs async异步常用函数总结(推荐)
2017/11/17 NodeJs
express如何解决ajax跨域访问session失效问题详解
2019/06/20 Javascript
[02:25]DOTA2英雄基础教程 熊战士
2014/01/03 DOTA
Python深入学习之装饰器
2014/08/31 Python
python方向键控制上下左右代码
2018/01/20 Python
python配置grpc环境
2019/01/01 Python
python实现学员管理系统
2019/02/26 Python
使用OpenCV实现仿射变换—旋转功能
2019/08/29 Python
伊利莎白雅顿官网:Elizabeth Arden
2016/10/10 全球购物
美国婚礼和派对礼品网站:Kate Aspen(新娘送礼会、迎婴派对)
2018/03/28 全球购物
Kickers鞋英国官网:男士、女士和儿童鞋
2021/03/08 全球购物
护士演讲稿范文
2014/01/05 职场文书
电子专业毕业生自我鉴定
2014/01/22 职场文书
纺织工程专业个人求职信范文
2014/01/27 职场文书
市场营销计划书
2015/01/17 职场文书
技术员个人工作总结
2015/03/03 职场文书
大学感恩节活动总结
2015/05/05 职场文书
2015年初中教务处工作总结
2015/07/21 职场文书
go语言基础 seek光标位置os包的使用
2021/05/09 Golang