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 相关文章推荐
用Javscript实现表单复选框的全选功能
May 25 Javascript
javascript 操作文件 实现方法小结
Jul 02 Javascript
JavaScript对象之间的转换 jQuery对象和原声DOM
Mar 07 Javascript
window.onresize 多次触发的解决方法
Nov 08 Javascript
angular中使用路由和$location切换视图
Jan 23 Javascript
js的对象与函数详解
Jan 21 Javascript
学习LayUI时自研的表单参数校验框架案例分析
Jul 29 Javascript
JS实现简单日历特效
Jan 03 Javascript
js判断浏览器的环境(pc端,移动端,还是微信浏览器)
Dec 24 Javascript
微信小程序订阅消息(java后端实现)开发
Jun 01 Javascript
深入了解Vue动态组件和异步组件
Jan 26 Vue.js
分享15个Webpack实用的插件!!!
Mar 31 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
深入apache host的配置详解
2013/06/09 PHP
yii2.0整合阿里云oss删除单个文件的方法
2017/09/19 PHP
JavaScript通过正则表达式实现表单验证电话号码
2014/03/07 Javascript
当某个文本框成为焦点时即清除文本框内容
2014/04/28 Javascript
Nodejs全栈框架StrongLoop推荐
2014/11/09 NodeJs
JS实现从连接中获取youtube的key实例
2015/07/02 Javascript
jQuery插件简单实现方法
2015/07/18 Javascript
Kindeditor在线文本编辑器如何过滤HTML
2016/04/14 Javascript
修改js confirm alert 提示框文字的简单实例
2016/06/10 Javascript
浅谈MVC+EF easyui dataGrid 动态加载分页表格
2016/11/10 Javascript
JavaScript仿支付宝6位数字密码输入框
2016/12/29 Javascript
JavaScript判断浏览器及其版本信息
2017/01/20 Javascript
浅谈Vue的加载顺序探讨
2017/10/25 Javascript
vue+webpack实现异步组件加载的方法
2018/02/03 Javascript
基于jQuery使用Ajax动态执行模糊查询功能
2018/07/05 jQuery
vue路由切换时取消之前的所有请求操作
2020/09/01 Javascript
JavaScript实现多球运动效果
2020/09/07 Javascript
[01:08:57]2014 DOTA2国际邀请赛中国区预选赛 5 23 CIS VS LGD第二场
2014/05/24 DOTA
Python中文字符串截取问题
2015/06/15 Python
Python 中 Virtualenv 和 pip 的简单用法详解
2017/08/18 Python
pandas创建新Dataframe并添加多行的实例
2018/04/08 Python
Python装饰器的执行过程实例分析
2018/06/04 Python
python实现简单http服务器功能
2018/09/17 Python
python中树与树的表示知识点总结
2019/09/14 Python
如何基于python生成list的所有的子集
2019/11/11 Python
Python批量删除mysql中千万级大量数据的脚本分享
2020/12/03 Python
CSS3动画之流彩文字效果+图片模糊效果+边框伸展效果实现代码合集
2017/08/18 HTML / CSS
CSS3五个技巧给你的网站带来出色的效果
2009/04/02 HTML / CSS
HTML5教程之html 5 本地数据库(Web Sql Database)
2014/04/03 HTML / CSS
Smilodox官方运动服装店:从运动服到健身配件
2020/08/27 全球购物
《彭德怀和他的大黑骡子》教学反思
2014/04/12 职场文书
招股说明书范本
2014/05/06 职场文书
清明节演讲稿
2014/05/27 职场文书
新闻编辑求职信
2014/07/13 职场文书
公司员工培训管理制度
2015/08/04 职场文书
2016年党员干部廉政承诺书
2016/03/24 职场文书