JS实现的简易拖放效果示例


Posted in Javascript onDecember 29, 2016

本文实例讲述了JS实现的简易拖放效果。分享给大家供大家参考,具体如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>简易拖放效果</title>
</head>
<body>
<script type="text/JavaScript">
<!--
var isIE = (document.all) ? true : false;// 是否ie
var $ = function (id) {
  //返回id对象
  return "string" == typeof id ? document.getElementById(id) : id;
};
var Class = {
  // 带构造方法的类
  create: function() {
    return function() { this.initialize.apply(this, arguments); } //用apply应用下面的initialize初始化属性
  }
}
var Extend = function(destination, source) {
  //继承
  for (var property in source) {
    destination[property] = source[property];
  }
}
var Bind = function(object, fun) {
  return function() {
    return fun.apply(object, arguments);
  }
}
/**
用object对象调用fun参数是event||window event
**/
var BindAsEventListener = function(object, fun) {
  return function(event) {
    return fun.call(object, (event || window.event));
  }
}
/**
添加帧听器事件
@oTarget 目标对象
@sEventType 事件类型
@fnHandler 目标触发事件对象
**/
function addEventHandler(oTarget, sEventType, fnHandler) {
  if (oTarget.addEventListener) {
    oTarget.addEventListener(sEventType, fnHandler, false);//firefox
  } else if (oTarget.attachEvent) {
    oTarget.attachEvent("on" + sEventType, fnHandler);//ie
  } else {
    oTarget["on" + sEventType] = fnHandler;//other
  }
};
/**
清除添加的帧听器事件
@oTarget 目标对象
@sEventType 事件类型
@fnHandler 目标触发事件对象
**/
function removeEventHandler(oTarget, sEventType, fnHandler) {
  if (oTarget.removeEventListener) {
    oTarget.removeEventListener(sEventType, fnHandler, false);
  } else if (oTarget.detachEvent) {
    oTarget.detachEvent("on" + sEventType, fnHandler);
  } else {
    oTarget["on" + sEventType] = null;
  }
};
/*------------------------------相关模型构造完毕-----------------------------------*/
//拖放程序
var SimpleDrag = Class.create();
SimpleDrag.prototype = {
 //拖放对象,触发对象,初始化
 initialize: function(drag) {
  this.Drag = $(drag);
  this._x = this._y = 0;
  this._fM = BindAsEventListener(this, this.Move);//_fM方法就是应用MOVE方法参数是event||window.event
  this._fS = Bind(this, this.Stop);//_fS类方法就是Stop方法
  this.Drag.style.position = "absolute";
  this.Drag.style.cursor = "move";
  addEventHandler(this.Drag, "mousedown", BindAsEventListener(this, this.Start));
 },
 //准备拖动
 Start: function(oEvent) {
  this._x = oEvent.clientX - this.Drag.offsetLeft;
  this._y = oEvent.clientY - this.Drag.offsetTop;
  addEventHandler(document, "mousemove", this._fM);
  addEventHandler(document, "mouseup", this._fS);
 },
 //拖动
 Move: function(oEvent) {
  this.Drag.style.left = oEvent.clientX - this._x + "px";
  this.Drag.style.top = oEvent.clientY - this._y + "px";
 },
 //停止拖动
 Stop: function() {
  removeEventHandler(document, "mousemove", this._fM);
  removeEventHandler(document, "mouseup", this._fS);
 }
};
// -->
</script>
<div id="idDrag" style="border:5px solid #0000FF; background:#C4E3FD; width:50px; height:50px;"></div>
<script type="text/javascript">
<!--
new SimpleDrag("idDrag");
// -->
</script>
</body>
</html>

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
找到一点可怜的关于dojo资料,谢谢作者!
Dec 06 Javascript
Javascript条件判断使用小技巧总结
Sep 08 Javascript
Jquery 获得服务器控件值的方法小结
May 11 Javascript
js/jquery获取浏览器窗口可视区域高度和宽度以及滚动条高度实现代码
Dec 17 Javascript
文本框(input)获取焦点(onfocus)时样式改变的示例代码
Jan 10 Javascript
javascript记住用户名和登录密码(两种方式)
Aug 04 Javascript
JS获取元素多层嵌套思路详解
May 16 Javascript
Vue精简版风格指南(推荐)
Jan 30 Javascript
微信小程序switch组件使用详解
Jan 31 Javascript
vuex + axios 做登录验证 并且保存登录状态的实例
Sep 16 Javascript
vue-mugen-scroll组件实现pc端滚动刷新
Aug 16 Javascript
uploadify插件实现多个图片上传并预览
Sep 30 Javascript
使用DeviceOne实现微信小程序功能
Dec 29 #Javascript
Angularjs 动态改变title标题(兼容ios)
Dec 29 #Javascript
浅谈js算法和流程控制
Dec 29 #Javascript
canvas学习之API整理笔记(二)
Dec 29 #Javascript
Node.js复制文件的方法示例
Dec 29 #Javascript
详解微信小程序——自定义圆形进度条
Dec 29 #Javascript
JS作用域深度解析
Dec 29 #Javascript
You might like
用函数读出数据表内容放入二维数组
2006/10/09 PHP
Win2003服务器安全加固设置--进一步提高服务器安全性
2007/05/23 PHP
php的dl函数用法实例
2014/11/06 PHP
PHP+RabbitMQ实现消息队列的完整代码
2019/03/20 PHP
PHP随机生成中文段落示例【测试网站内容时使用】
2020/04/26 PHP
CSS常用网站布局实例
2008/04/03 Javascript
15 个 JavaScript Web UI 库
2010/05/19 Javascript
js实现上传图片之上传前预览图片
2013/03/25 Javascript
js获取当前日期代码适用于网页头部
2013/06/27 Javascript
jQuery对象的selector属性用法实例
2014/12/27 Javascript
js文本框走动跑马灯效果代码分享
2015/08/25 Javascript
jQuery实现可高亮显示的二级CSS菜单效果
2015/09/01 Javascript
JavaScript根据CSS的Media Queries来判断浏览设备的方法
2016/05/10 Javascript
原生js实现对Ajax的封装(仿jquery)
2017/01/22 Javascript
JavaScript评论点赞功能的实现方法
2017/03/13 Javascript
[00:27]DOTA2战队VP、Secret贺新春
2018/02/11 DOTA
python实现从web抓取文档的方法
2014/09/26 Python
Python下rrdtool模块的基本使用方法
2015/11/13 Python
Python3 中文文件读写方法
2018/01/23 Python
Python利用逻辑回归模型解决MNIST手写数字识别问题详解
2020/01/14 Python
python输出pdf文档的实例
2020/02/13 Python
Python threading.local代码实例及原理解析
2020/03/16 Python
python利用opencv保存、播放视频
2020/11/02 Python
简单介绍Object类的功能、常用方法
2013/10/02 面试题
工地安全检查制度
2014/02/04 职场文书
幼儿园毕业典礼主持词
2014/03/21 职场文书
办公室主任岗位承诺书
2014/05/29 职场文书
大专毕业生求职信
2014/07/05 职场文书
弄虚作假心得体会
2014/09/10 职场文书
销售经理工作失职检讨书
2014/10/24 职场文书
安全生产先进个人事迹材料
2014/12/30 职场文书
2015年客服工作总结范文
2015/04/02 职场文书
消防宣传标语大全
2015/08/03 职场文书
2019初中学生入团申请书
2019/06/27 职场文书
pytorch model.cuda()花费时间很长的解决
2021/06/01 Python
Python答题卡识别并给出分数的实现代码
2021/06/22 Python