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 相关文章推荐
自制轻量级仿jQuery.boxy对话框插件代码
Oct 26 Javascript
关于firefox的ElementTraversal 接口 使用说明
Nov 11 Javascript
用表格输出1-1000之间的数字实现代码(附特效)
Apr 21 Javascript
JS判断、校验MAC地址的2个实例
May 05 Javascript
JavaScript Math.ceil 方法(对数值向上取整)
Jan 09 Javascript
JS实现复制内容到剪贴板功能兼容所有浏览器(推荐)
Jun 17 Javascript
js canvas实现擦除效果示例代码
Apr 26 Javascript
vue实现的网易云音乐在线播放和下载功能案例
Feb 18 Javascript
使用taro开发微信小程序遇到的坑总结
Apr 08 Javascript
AI小程序之语音听写来了,十分钟掌握百度大脑语音听写全攻略
Mar 13 Javascript
jQuery实现的上拉刷新功能组件示例
May 01 jQuery
理解JavaScript中的Proxy 与 Reflection API
Sep 21 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
CodeIgniter中使用cookie的三种方式详解
2014/07/18 PHP
PHP常用函数总结(180多个)
2016/12/25 PHP
windows下的WAMP环境搭建图文教程(推荐)
2017/07/27 PHP
关于Laravel-admin的基础用法总结和自定义model详解
2019/10/08 PHP
IE autocomplete internet explorer's autocomplete
2007/06/30 Javascript
JavaScript 入门·JavaScript 具有全范围的运算符
2007/10/01 Javascript
jquery下json数组的操作实现代码
2010/08/09 Javascript
addEventListener 的用法示例介绍
2014/05/07 Javascript
JQuery实现表格动态增加行并对新行添加事件
2014/07/30 Javascript
JavaScript中的Math.sin()方法使用详解
2015/06/15 Javascript
jQuery实现的进度条效果
2015/07/15 Javascript
详解AngularJS中module模块的导入导出
2015/12/10 Javascript
原生JavaScript实现精美的淘宝轮播图效果示例【附demo源码下载】
2017/05/27 Javascript
Vue2.0基于vue-cli+webpack同级组件之间的通信教程(推荐)
2017/09/14 Javascript
React Native 截屏组件的示例代码
2017/12/06 Javascript
基于JS实现html中placeholder属性提示文字效果示例
2018/04/19 Javascript
Python性能优化的20条建议
2014/10/25 Python
python轻松实现代码编码格式转换
2015/03/26 Python
Python使用poplib模块和smtplib模块收发电子邮件的教程
2016/07/02 Python
python 简单的多线程链接实现代码
2016/08/28 Python
python编程实现归并排序
2017/04/14 Python
Python 安装setuptools和pip工具操作方法(必看)
2017/05/22 Python
Python3内置模块random随机方法小结
2019/07/13 Python
Pytorch中.new()的作用详解
2020/02/18 Python
浅谈keras2 predict和fit_generator的坑
2020/06/17 Python
5个你不知道的HTML5的接口介绍
2013/08/07 HTML / CSS
国际知名军事风格休闲装品牌:Alpha Industries(阿尔法工业)
2017/05/24 全球购物
简历中个人自我评价范文
2013/12/26 职场文书
《这儿真好》教学反思
2014/02/22 职场文书
奖学金感谢信
2015/01/21 职场文书
交通事故和解协议书
2015/01/27 职场文书
工程部岗位职责
2015/02/10 职场文书
材料采购员岗位职责
2015/04/03 职场文书
离婚代理词范文
2015/05/23 职场文书
婚宴领导致辞
2015/07/28 职场文书
2016应届毕业生实习评语
2015/12/01 职场文书