JS实现的自定义网页拖动类


Posted in Javascript onNovember 06, 2015

本文实例讲述了JS实现的自定义网页拖动类。分享给大家供大家参考,具体如下:

先来看运行效果截图如下:

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>
<script type="text/javascript">
var d=document;//给document对象一个通用的事件侦听方法
d.addListener=function(e,f,b){
 this.attachEvent?this.attachEvent('on'+e,f):this.addEventListener(e,f,b);
}
d.removeListener=function(e,f,b){
 this.detachEvent?this.detachEvent('on'+e,f):this.removeEventListener(e,f,b);
}
function $(){//接收一个id参数,返回带有startDrag方法的对象
 var o=document.getElementById(arguments[0]);
 o.addListener=function(e,f,b){
  this.attachEvent?this.attachEvent('on'+e,f):this.addEventListener(e,f,b);
 }
 o.removeListener=function(e,f,b){
  this.detachEvent?this.detachEvent('on'+e,f):this.removeEventListener(e,f,b);
 }
 o.startDrag=function(obj){//参数obj默认为o本身,可以传其它参数以确定要移动的对象
  var obj=obj?obj:o;
  var sx,sy;
  o.style.cursor="move";
  o.addListener("mousedown",function(e){
   e||event;
   if(e.button==1||e.button==0){
    sx=e.clientX-obj.offsetLeft;sy=e.clientY-obj.offsetTop;
    d.addListener("mousemove",move,false);
    d.addListener("mouseup",stopDrag,false);
   }
  },false);
  var stopDrag=function(){
   d.removeListener("mousemove",move,false);
   d.removeListener("mouseup",stopDrag,false);
  }
  var move=function(e){
   e||event;
   window.getSelection ? window.getSelection().removeAllRanges() :
    document.selection.empty();
   if(e.preventDefault)e.preventDefault();//这两句便是解决firefox拖动问题的.
   with (obj.style){
    position="absolute"
    left=e.clientX-sx+"px";
    top=e.clientY-sy+"px";
   }
  }
 }
 return o; 
}
window.onload=function(){$("ok").startDrag($("os"))}//本例中拖动ok元素,移动其父元素
</script>
<style type="text/css">
*{margin:0;padding:0}
#ok{width:215px;height:170px;background:url(images/sample1.gif)}
#os{width:400px;height:300px;background:#09f;left:300px}
#os2{width:400px;height:300px;background:#f90;}
</style>
</head>
<body>
<div id="os"><p id="ok"></p></div>
<div id="os2"></div>
</body>
</html>

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

Javascript 相关文章推荐
jQuery ui插件的使用方法代码实例
May 08 Javascript
最好用的省市二级联动 原生js实现你值得拥有
Sep 22 Javascript
浅谈Javascript 执行顺序
Dec 18 Javascript
值得分享的Bootstrap Ace模板实现菜单和Tab页效果
Dec 30 Javascript
JavaScript添加随滚动条滚动窗体的方法
Feb 23 Javascript
jQuery animate easing使用方法图文详解
Jun 17 Javascript
[js高手之路]图解javascript的原型(prototype)对象,原型链实例
Aug 28 Javascript
Nuxt.js实战详解
Jan 18 Javascript
JS实现的合并多个数组去重算法示例
Apr 11 Javascript
详解如何在Javascript和Sass之间共享变量
Nov 13 Javascript
微信小程序实现watch监听
Jun 04 Javascript
原生JavaScript实现幻灯片效果
Feb 19 Javascript
js基础知识(公有方法、私有方法、特权方法)
Nov 06 #Javascript
JS实现的N多简单无缝滚动代码(包含图文效果)
Nov 06 #Javascript
javascript中的altKey 和 Event属性大全
Nov 06 #Javascript
JS日期加减,日期运算代码
Nov 05 #Javascript
程序员必知35个jQuery 代码片段
Nov 05 #Javascript
js如何实现淡入淡出效果
Nov 18 #Javascript
JavaScript数组去重的五种方法
Nov 05 #Javascript
You might like
PHP ajax 异步执行不等待执行结果的处理方法
2015/05/27 PHP
Yii2下点击验证码的切换实例代码
2017/03/14 PHP
ThinkPHP3.1.x修改成功与失败跳转页面的方法
2017/09/29 PHP
php 字符串中是否包含指定字符串的多种方法
2018/04/12 PHP
PHP number_format函数原理及实例解析
2020/07/14 PHP
给Javascript数组插入一条记录的代码
2007/08/30 Javascript
JavaScript的parseInt 进制问题
2009/05/07 Javascript
JavaScript关于select的相关操作说明
2010/01/13 Javascript
jquery插件制作 自增长输入框实现代码
2012/08/17 jQuery
详解AngularJS 模态对话框
2016/04/07 Javascript
AngularJS教程之MVC体系结构详解
2016/08/16 Javascript
tangram.js库实现js类的方式实例分析
2018/01/06 Javascript
浅谈Vue-cli单文件组件引入less,sass,css样式的不同方法
2018/03/13 Javascript
three.js实现圆柱体
2018/12/30 Javascript
js动态获取时间的方法分析
2019/08/02 Javascript
微信小程序实现多行文字超出部分省略号显示功能
2019/10/23 Javascript
webpack是如何实现模块化加载的方法
2019/11/06 Javascript
element el-table表格的二次封装实现(附表格高度自适应)
2021/01/19 Javascript
非递归的输出1-N的全排列实例(推荐)
2017/04/11 Python
python中的字符串内部换行方法
2018/07/19 Python
django连接mysql配置方法总结(推荐)
2018/08/18 Python
Python 获取主机ip与hostname的方法
2018/12/17 Python
Pycharm 字体大小调整设置的方法实现
2019/09/27 Python
在Python中利用pickle保存变量的实例
2019/12/30 Python
pytorch 准备、训练和测试自己的图片数据的方法
2020/01/10 Python
Python 读取xml数据,cv2裁剪图片实例
2020/03/10 Python
python字典和json.dumps()的遇到的坑分析
2020/03/11 Python
预订从美国飞往印度的机票:MyTicketsToIndia
2017/05/19 全球购物
船舶专业个人求职信范文
2014/01/02 职场文书
新闻编辑自荐书范文
2014/02/12 职场文书
写求职信要注意什么问题
2014/04/12 职场文书
优秀德育工作者事迹材料
2014/05/07 职场文书
推广活动策划方案
2014/08/23 职场文书
2015年机关作风和效能建设工作总结
2015/07/23 职场文书
python异步的ASGI与Fast Api实现
2021/07/16 Python
JavaScript最完整的深浅拷贝实现方式详解
2022/02/28 Javascript