JS实现可展开折叠层的鼠标拖曳效果


Posted in Javascript onOctober 09, 2015

本文实例讲述了JS实现可展开折叠层的鼠标拖曳效果。分享给大家供大家参考。具体如下:

这是一款简单JS代码实现的鼠标拖曳图层效果,比较精简,大家参考一下。鼠标点击层标题栏可实现层内容的展开与折叠,按住标题栏可实现层的拖动。

运行效果截图如下:

JS实现可展开折叠层的鼠标拖曳效果

在线演示地址如下:

具体代码如下:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
 <head>
 <title>鼠标拖曳</title>
 </head>
 <body>
 <script type="text/javascript">
 function drag(elementToDrag,event){
  var startX=event.clientX,startY=event.clientY;
  var origX=elementToDrag.offsetLeft,origY=elementToDrag.offsetTop;
  var deltaX=startX-origX,deltaY=startY-origY;
  if(document.addEventListener){
    document.addEventListener("mousemove",moveHandler,true); 
  document.addEventListener("mouseup",upHandler,true);
 }
 else{
  elementToDrag.setCapture();
  elementToDrag.attachEvent("onmousemove",moveHandler);
  elementToDrag.attachEvent("onmouseup",upHandler);
  elementToDrag.attachEvent("onlosecapture",upHandler);
 }
 if(event.stopPropagation) event.stopPropagation();
 else event.cancelBubble=true;
 if(event.preventDefault) event.preventDefault();
 else event.returnValue=false;
 function moveHandler(e){
  if(!e) e=window.event;
  elementToDrag.style.left=(e.clientX-deltaX)+"px";
  elementToDrag.style.top=(e.clientY-deltaY)+"px";
  elementToDrag.style.zIndex="10";
  elementToDrag.getElementsByTagName("p")[0].innerHTML="clientX:"+e.clientX+"</br>"+"clientY:"+e.clientY+"</br>"+"offsetLeft:"+origX+"</br>"+"offsetTop:"+origY+"</br>"+"clientX-offsetLeft:"+deltaX+"</br>"+"clientY-offsetTop:"+deltaY+"</br>";
  if(e.stopPropagation) e.stopPropagation();
  else e.cancelBubble = true;
 }
 function upHandler(e){
  if(!e) e=window.event;
   elementToDrag.style.zIndex="1";
  if(document.removeEventListener){
   document.removeEventListener("mouseup",upHandler,true);
  document.removeEventListener("mousemove",moveHandler,true);
  }
  else{
   elementToDrag.detachEvent("onlosecapture",upHandler);
  elementToDrag.detachEvent("onmouseup",upHandler);
  elementToDrag.detachEvent("onmousemove",moveHandler);
  elementToDrag.releaseCapture();
  }
  if(e.stopPropagation) e.stopPropagation();
  else e.cancelBubble=true;
 }
 }
 </script>
 <div style="position:absolute;left:100px;top:100px;width:250px;background-color:#789;border:1px solid #f00">
  <div style="background:#ccc;border-bottom:dotted black;padding:3px;font-weight:bold" onmousedown="drag(this.parentNode,event)">Drag Me1</div>
 <p>test</p>
 </div>
  <div style="position:absolute;left:100px;top:200px;width:250px;background-color:#789;border:1px solid #f00">
  <div style="background:#ccc;border-bottom:dotted black;padding:3px;font-weight:bold" onmousedown="drag(this.parentNode,event)">Drag Me2</div>
 <p>test</p>
 </div>
  <div style="position:absolute;left:100px;top:300px;width:250px;background-color:#789;border:1px solid #f00">
  <div style="background:#ccc;border-bottom:dotted black;padding:3px;font-weight:bold" onmousedown="drag(this.parentNode,event)">Drag Me3</div>
 <p>test</p>
 </div>
 </body>
</html>

希望本文所述对大家的JavaScript程序设计有所帮助。

Javascript 相关文章推荐
在你的网页中嵌入外部网页的方法
Apr 02 Javascript
javascript 变量作用域 代码分析
Jun 26 Javascript
JavaScript的eval JSON object问题
Nov 15 Javascript
JS小框架 fly javascript framework
Nov 26 Javascript
javascript 用函数语句和表达式定义函数的区别详解
Jan 06 Javascript
$.each与$().each的区别示例介绍
Mar 20 Javascript
详解jQuery中的元素的属性和相关操作
Aug 14 Javascript
原生JavaScript实现Ajax的方法
Apr 07 Javascript
微信小程序 安全包括(框架、功能模块、账户使用)详解
Jan 16 Javascript
vue-awesome-swiper 基于vue实现h5滑动翻页效果【推荐】
Nov 08 Javascript
JS实现动态无缝轮播
Jan 11 Javascript
javascript实现智能手环时间显示
Sep 18 Javascript
JavaScript实现横向滑出的多级菜单效果
Oct 09 #Javascript
JS实现样式清新的横排下拉菜单效果
Oct 09 #Javascript
jQuery表格行上移下移和置顶的实现方法
Oct 08 #Javascript
Jquery中使用show()与hide()方法动画显示和隐藏图片
Oct 08 #Javascript
jQuery仅用3行代码实现的显示与隐藏功能完整实例
Oct 08 #Javascript
js小数运算出现多位小数如何解决
Oct 08 #Javascript
jQuery实现仿微软首页感应鼠标变化滑动窗口效果
Oct 08 #Javascript
You might like
PHP 函数call_user_func和call_user_func_array用法详解
2014/03/02 PHP
php的webservice的wsdl的XML无法显示问题的解决方法
2014/03/11 PHP
php生成验证码函数
2015/10/20 PHP
phplist及phpmailer(组合使用)通过gmail发送邮件的配置方法
2016/03/30 PHP
php的PDO事务处理机制实例分析
2017/02/16 PHP
JS查看对象功能代码
2008/04/25 Javascript
js onpropertychange输入框 事件获取属性
2009/03/26 Javascript
JavaScript之appendChild、insertBefore和insertAfter使用说明
2010/12/30 Javascript
jquery解决客户端跨域访问问题
2015/01/06 Javascript
深入理解JavaScript系列(45):代码复用模式(避免篇)详解
2015/03/04 Javascript
AngularJS+Bootstrap实现多文件上传与管理
2016/11/08 Javascript
js实现tab选项卡切换功能
2017/01/13 Javascript
微信小程序实现红包功能(后端PHP实现逻辑)
2018/07/11 Javascript
JavaScript函数定义方法实例详解
2019/03/05 Javascript
vue项目中使用scss的方法步骤
2019/05/16 Javascript
Vue 实例事件简单示例
2019/09/19 Javascript
Vue 使用Props属性实现父子组件的动态传值详解
2019/11/13 Javascript
vue项目中使用多选框的实例代码
2020/07/22 Javascript
Python中使用装饰器和元编程实现结构体类实例
2015/01/28 Python
python字符串的常用操作方法小结
2016/05/21 Python
Python字符串拼接的几种方法整理
2017/08/02 Python
解决paramiko执行命令超时的问题
2020/04/16 Python
Python多线程:主线程等待所有子线程结束代码
2020/04/25 Python
Pytorch如何切换 cpu和gpu的使用详解
2021/03/01 Python
利用简洁的图片预加载组件提升html5移动页面的用户体验
2016/03/11 HTML / CSS
html5实现canvas阴影效果示例
2014/05/07 HTML / CSS
意大利综合购物网站:Giordano Shop
2016/10/21 全球购物
全球速卖通:AliExpress(国际版淘宝)
2017/09/20 全球购物
英国门把手公司:Door Handle Company
2019/05/12 全球购物
卖车协议书
2014/04/21 职场文书
读书活动总结范文
2014/04/26 职场文书
商务经理岗位职责
2014/07/30 职场文书
会计系毕业求职信
2014/08/07 职场文书
承兑汇票转让证明怎么写?
2014/11/30 职场文书
先进教育工作者事迹材料
2014/12/23 职场文书
2016年圣诞节义工活动总结
2016/04/01 职场文书