当前位置: 移动技术网 > IT编程>开发语言>JavaScript > JS实现的简易拖放效果示例

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

2019年04月01日  | 移动技术网IT编程  | 我要评论
本文实例讲述了js实现的简易拖放效果。分享给大家供大家参考,具体如下: <!doctype html public "-//w3c//dtd xhtml 1

本文实例讲述了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切换特效与技巧总结》、《javascript查找算法技巧总结》、《javascript动画特效与技巧汇总》、《javascript错误与调试技巧总结》、《javascript数据结构与算法技巧总结》、《javascript遍历算法与技巧总结》及《javascript数学运算用法总结

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

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网