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中实现标签切换效果的代码
Mar 01 Javascript
一个JQuery写的点击上下滚动的小例子
Aug 27 Javascript
js正则表达式匹配数字字母下划线等
Apr 14 Javascript
jQuery实现二级下拉菜单效果
Jan 05 Javascript
微信小程序-拍照或选择图片并上传文件
Jan 06 Javascript
使用vue和datatables进行表格的服务器端分页实例代码
Jun 07 Javascript
微信小程序 页面跳转传值实现代码
Jul 27 Javascript
jQuery实现腾讯信用界面(自制刻度尺)样式
Aug 15 jQuery
JS实现将链接生成二维码并转为图片的方法
Mar 17 Javascript
微信小程序实现漂亮的弹窗效果
May 26 Javascript
js实现点击烟花特效
Oct 14 Javascript
React更新渲染原理深入分析
Dec 24 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 join函数应用
2011/05/04 PHP
PHP文章按日期(月日)SQL归档语句
2012/11/29 PHP
PHP实现支持GET,POST,Multipart/form-data的HTTP请求类
2014/09/24 PHP
取得一定长度的内容,处理中文
2006/12/20 Javascript
JavaScript性能优化 创建文档碎片(document.createDocumentFragment)
2010/07/13 Javascript
datagrid框架的删除添加与修改
2013/04/08 Javascript
Javascript表格翻页效果实现思路及代码
2013/08/23 Javascript
使用javascript实现有效时间的控制,并显示将要过期的时间
2014/01/02 Javascript
使用jquery实现放大镜效果
2014/09/02 Javascript
Node.js事件循环(Event Loop)和线程池详解
2015/01/28 Javascript
jquery实现简单的轮换出现效果实例
2015/07/23 Javascript
五种js判断是否为整数类型方式
2015/12/03 Javascript
JavaScript实现仿淘宝商品购买数量的增减效果
2016/01/22 Javascript
关于Javascript回调函数的一个妙用
2016/08/29 Javascript
jQuery绑定事件的四种方式介绍
2016/10/31 Javascript
Vue.js移动端左滑删除组件的实现代码
2017/09/08 Javascript
深入浅出webpack之externals的使用
2017/12/04 Javascript
小程序日历控件使用方法详解
2018/12/29 Javascript
element-ui组件table实现自定义筛选功能的示例代码
2019/03/15 Javascript
vue框架下部署上线后刷新报404问题的解决方案(推荐)
2019/04/03 Javascript
[02:28]DOTA2英雄基础教程 灰烬之灵
2013/12/19 DOTA
Python天气预报采集器实现代码(网页爬虫)
2012/10/07 Python
python下10个简单实例代码
2017/11/15 Python
Python字典的核心底层原理讲解
2019/01/24 Python
在python中logger setlevel没有生效的解决
2020/02/21 Python
python实现遍历文件夹图片并重命名
2020/03/23 Python
英国的知名精品百货公司:House of Fraser(福来德)
2016/08/14 全球购物
波兰在线杂货店:Polski Koszyk
2019/11/02 全球购物
《小池塘》教学反思
2014/02/28 职场文书
自我鉴定标准格式
2014/03/19 职场文书
2014国庆节演讲稿:祖国在我心中(400字)
2014/09/25 职场文书
幼儿教师师德师风自我剖析材料
2014/09/29 职场文书
医院护士工作检讨书
2014/10/26 职场文书
小学运动会入场词
2015/07/18 职场文书
小学大队长竞选稿
2015/11/20 职场文书
Android中View.post和Handler.post的关系
2022/06/05 Java/Android