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 相关文章推荐
二行代码解决全部网页木马
Mar 28 Javascript
jquery实现非叠加式的搜索框提示效果
Jan 07 Javascript
JavaScript代码复用模式详解
Nov 07 Javascript
JQuery使用$.ajax和checkbox实现下次不在通知功能
Apr 16 Javascript
使用Node.js为其他程序编写扩展的基本方法
Jun 23 Javascript
Bootstrap每天必学之导航条(二)
Mar 01 Javascript
利用jsonp跨域调用百度js实现搜索框智能提示
Aug 24 Javascript
vue.js框架实现表单排序和分页效果
Aug 09 Javascript
集合Bootstrap自定义confirm提示效果
Sep 19 Javascript
一个有意思的鼠标点击文字特效jquery代码
Sep 23 jQuery
Webpack中publicPath路径问题详解
May 03 Javascript
JavaScript实现简易聊天对话框(加滚动条)
Feb 10 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(6) 面向对象
2010/02/16 PHP
深入分析PHP引用(&amp;)
2014/09/04 PHP
PHP中in_array函数使用的问题与解决办法
2016/09/11 PHP
PHP文件上传操作实例详解
2016/09/27 PHP
Laravel使用消息队列需要注意的一些问题
2017/12/13 PHP
Javascript 事件流和事件绑定
2009/07/16 Javascript
jquery.autocomplete修改实现键盘上下键自动填充示例
2013/11/19 Javascript
js+div实现图片滚动效果代码
2014/02/10 Javascript
js如何打印object对象
2015/10/16 Javascript
原生JavaScript实现异步多文件上传
2015/12/02 Javascript
JavaScript中匿名函数的用法及优缺点详解
2016/06/01 Javascript
Bootstrap表格使用方法详解
2017/02/17 Javascript
Js实现京东无延迟菜单效果实例(demo)
2017/06/02 Javascript
从零开始搭建一个react项目开发
2018/02/09 Javascript
node内置调试方法总结
2018/02/22 Javascript
微信小程序实现留言板功能
2018/11/02 Javascript
Windows下支持自动更新的Electron应用脚手架的方法
2018/12/24 Javascript
bootstrap tooltips在 angularJS中的使用方法
2019/04/10 Javascript
layui数据表格实现重载数据表格功能(搜索功能)
2019/07/27 Javascript
微信小程序文章详情功能完整实例
2020/06/03 Javascript
[01:04:30]Fnatic vs Mineski 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/18 DOTA
Python使用matplotlib实现在坐标系中画一个矩形的方法
2015/05/20 Python
Python序列化基础知识(json/pickle)
2017/10/19 Python
对dataframe数据之间求补集的实例详解
2019/01/30 Python
Django RBAC权限管理设计过程详解
2019/08/06 Python
Window10下python3.7 安装与卸载教程图解
2019/09/30 Python
python创建学生管理系统
2019/11/22 Python
pandas数据分组groupby()和统计函数agg()的使用
2021/03/04 Python
html5 Canvas画图教程(4)—未闭合的路径及渐变色的填充方法
2013/01/09 HTML / CSS
新大陆软件面试题
2016/11/24 面试题
大学本科毕业生求职信范文
2013/12/18 职场文书
技能比武方案
2014/05/21 职场文书
地方课程教学计划
2015/01/19 职场文书
导师鉴定意见
2015/06/05 职场文书
六一儿童节致辞
2015/07/31 职场文书
如何避免mysql启动时错误及sock文件作用分析
2022/01/22 MySQL