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 相关文章推荐
javascript 学习之旅 (3)
Feb 05 Javascript
javascript动态创建及删除元素的方法
Dec 22 Javascript
js实现数组转换成json
Jun 26 Javascript
JavaScript为事件句柄绑定监听函数实例详解
Dec 15 Javascript
浅谈js之字面量、对象字面量的访问、关键字in的用法
Nov 20 Javascript
JS批量替换内容中关键词为超链接
Feb 20 Javascript
JQuery实现定时刷新功能代码
May 09 jQuery
VUE2.0+Element-UI+Echarts封装的组件实例
Mar 02 Javascript
vue底部加载更多的实例代码
Jun 29 Javascript
element-ui 表格数据时间格式化的方法
Aug 24 Javascript
jquery插件开发模式实例详解
Jul 20 jQuery
vue实现移动端图片上传功能
Dec 23 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巧获服务器端信息
2006/12/06 PHP
谈谈新手如何学习PHP
2006/12/14 PHP
php下用GD生成生成缩略图的两个选择和区别
2007/04/17 PHP
如何使用PHP给图片加水印
2016/10/12 PHP
PHP基于SMTP协议实现邮件发送实例代码
2017/04/27 PHP
php使用curl实现ftp文件下载功能
2017/05/16 PHP
JavaScript 无符号右移赋值操作
2009/04/17 Javascript
js关于命名空间的函数实例
2015/02/05 Javascript
JavaScript获取网页表单提交方式的方法
2015/04/02 Javascript
jquery UI Datepicker时间控件的使用及问题解决
2016/04/28 Javascript
NodeJS配置HTTPS服务实例分享
2017/02/19 NodeJs
node.js-v6新版安装具体步骤(分享)
2017/09/06 Javascript
基于Vuex无法观察到值变化的解决方法
2018/03/01 Javascript
nodejs 如何手动实现服务器
2018/08/20 NodeJs
详解webpack打包时排除其中一个css、js文件或单独打包一个css、js文件(两种方法)
2018/10/26 Javascript
使用Node.js实现base64和png文件相互转换的方法
2020/03/11 Javascript
[46:47]2014 DOTA2国际邀请赛中国区预选赛5.21 LGD-CDEC VS NE
2014/05/22 DOTA
python标准算法实现数组全排列的方法
2015/03/17 Python
Python中str.join()简单用法示例
2018/03/20 Python
python+opencv实现霍夫变换检测直线
2020/10/23 Python
django-rest-framework解析请求参数过程详解
2019/07/18 Python
详解如何用TensorFlow训练和识别/分类自定义图片
2019/08/05 Python
python设置随机种子实例讲解
2019/09/12 Python
pygame实现俄罗斯方块游戏(对战篇1)
2019/10/29 Python
python手写均值滤波
2020/02/19 Python
使用python matploblib库绘制准确率,损失率折线图
2020/06/16 Python
css3弹性盒模型实例介绍
2013/05/27 HTML / CSS
美国女士泳装店:Swimsuits For All
2017/03/02 全球购物
日本最大的药妆连锁店:Matsukiyo松本清药妆店
2017/11/23 全球购物
一套Delphi的笔试题二
2013/05/11 面试题
计算机专业推荐信范文
2013/11/20 职场文书
采购部主管岗位职责
2014/01/01 职场文书
励志演讲稿3分钟
2014/08/21 职场文书
授权委托书公证
2014/09/14 职场文书
《角的初步认识》教学反思
2016/02/17 职场文书
python自动统计zabbix系统监控覆盖率的示例代码
2021/04/03 Python