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 相关文章推荐
兼容IE与firefox火狐的回车事件(js与jquery)
Oct 20 Javascript
Eval and new funciton not the same thing
Dec 27 Javascript
JavaScript模拟重力状态下抛物运动的方法
Mar 03 Javascript
javascript简单实现等比例缩小图片的方法
Jul 27 Javascript
js 判断各种数据类型的简单方法(推荐)
Aug 29 Javascript
第一次接触神奇的前端框架vue.js
Dec 01 Javascript
js 动态生成json对象、时时更新json对象的方法
Dec 02 Javascript
工作中常用的js、jquery自定义扩展函数代码片段汇总
Dec 22 Javascript
微信小程序中做用户登录与登录态维护的实现详解
May 17 Javascript
使用async await 封装 axios的方法
Jul 09 Javascript
在vue中读取本地Json文件的方法
Sep 06 Javascript
JavaScript对象原型链原理详解
Feb 05 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
关于Intype一些小问题的解决办法
2008/03/28 PHP
easyui的tabs update正确用法分享
2014/03/21 PHP
jquery 日期分离成年月日的代码
2010/05/14 Javascript
javascript检测页面是否缩放的小例子
2013/05/16 Javascript
JS代码同步文本框内容的实例方法
2013/07/12 Javascript
分享Javascript中最常用的55个经典小技巧
2013/11/29 Javascript
可自定义速度的js图片无缝滚动示例分享
2014/01/20 Javascript
Jquery如何实现点击时高亮显示代码
2014/01/22 Javascript
nodejs npm package.json中文文档
2014/09/04 NodeJs
jQuery.each使用详解
2015/07/07 Javascript
详解JavaScript函数
2015/12/01 Javascript
JS JSOP跨域请求实例详解
2016/07/04 Javascript
JavaScript实现窗口抖动效果
2016/10/19 Javascript
JavaScript中防止微信浏览器被整体拖动的方法
2017/08/25 Javascript
js实现canvas保存图片为png格式并下载到本地的方法
2017/08/31 Javascript
微信小程序中实现手指缩放图片的示例代码
2018/03/13 Javascript
动态实现element ui的el-table某列数据不同样式的示例
2021/01/22 Javascript
[03:57]《不朽》——2015DOTA2国际邀请赛—中国军团出征主题曲MV
2015/07/15 DOTA
python logging类库使用例子
2014/11/22 Python
简单介绍Python中的len()函数的使用
2015/04/07 Python
python爬取各类文档方法归类汇总
2018/03/22 Python
Python实现RGB与HSI颜色空间的互换方式
2019/11/27 Python
pandas读取csv文件提示不存在的解决方法及原因分析
2020/04/21 Python
浅谈优化Django ORM中的性能问题
2020/07/09 Python
Python获取android设备cpu和内存占用情况
2020/11/15 Python
Python爬虫回测股票的实例讲解
2021/01/22 Python
宝拉珍选美国官网:Paula’s Choice美国
2018/01/07 全球购物
北京某公司的.net笔试题
2014/03/20 面试题
控制工程专业个人求职信
2013/09/25 职场文书
品管员岗位职责
2013/11/10 职场文书
优秀部门获奖感言
2014/02/14 职场文书
《第一次抱母亲》教学反思
2014/04/16 职场文书
反邪教标语
2014/06/23 职场文书
三行辞职书范文
2015/02/26 职场文书
手把手教你制定暑期学习计划,让你度过充实的暑假
2019/08/22 职场文书
分享几个实用的CSS代码块
2022/06/10 HTML / CSS