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.Jcrop的头像编辑器
Mar 01 Javascript
Extjs407 getValue()和getRawValue()区别介绍
May 21 Javascript
JQuery选择器、过滤器大整理
May 26 Javascript
js仿小米官网图片轮播特效
Sep 29 Javascript
微信小程序 this和that详解及简单实例
Feb 13 Javascript
详解为Bootstrap Modal添加拖拽的方法
Jan 05 Javascript
node前端开发模板引擎Jade的入门
May 11 Javascript
搭建基于express框架运行环境的方法步骤
Nov 15 Javascript
JS去除字符串最后的逗号实例分析【四种方法】
Jun 20 Javascript
Vue项目环境搭建详细总结
Sep 26 Javascript
使用Vue-cli3.0创建的项目 如何发布npm包
Oct 10 Javascript
javascript函数式编程基础
Sep 15 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下过滤HTML代码的函数
2007/12/10 PHP
两个php日期控制类实例
2014/12/09 PHP
深入剖析PHP中printf()函数格式化使用
2016/05/23 PHP
Linux平台PHP5.4设置FPM线程数量的方法
2016/11/09 PHP
jquery 回车事件实现代码
2011/08/23 Javascript
javascript权威指南 学习笔记之null和undefined
2011/09/25 Javascript
js判断ie版本号的简单实现代码
2014/03/05 Javascript
浅谈javascript中字符串String与数组Array
2014/12/31 Javascript
JQuery操作textarea,input,select,checkbox方法
2015/09/02 Javascript
js实现根据身份证号自动生成出生日期
2015/12/15 Javascript
jQuery拖动元素并对元素进行重新排序
2015/12/30 Javascript
jQuery使用模式窗口实现在主页面和子页面中互相传值的方法
2016/03/01 Javascript
Json解析的方法小结
2016/06/22 Javascript
AngularJS 模型详细介绍及实例代码
2016/07/27 Javascript
Bootstrap中定制LESS-颜色及导航条(推荐)
2016/11/21 Javascript
webpack独立打包和缓存处理详解
2017/04/03 Javascript
妙用缓存调用链实现JS方法的重载
2018/04/30 Javascript
pygame加载中文名mp3文件出现error
2017/03/31 Python
Python给你的头像加上圣诞帽
2018/01/04 Python
20行python代码的入门级小游戏的详解
2019/05/05 Python
django数据关系一对多、多对多模型、自关联的建立
2019/07/24 Python
python 并发编程 阻塞IO模型原理解析
2019/08/20 Python
详解mac python+selenium+Chrome 简单案例
2019/11/08 Python
Python读取实时数据流示例
2019/12/02 Python
Python中格式化字符串的四种实现
2020/05/26 Python
pytorch查看模型weight与grad方式
2020/06/24 Python
Python使用socket_TCP实现小文件下载功能
2020/10/09 Python
HTML5实现可缩放时钟代码
2017/08/28 HTML / CSS
出门问问全球官方商城:Tichome音箱和TicWatch智能手表
2017/12/02 全球购物
涉外经济法专业毕业生推荐信
2013/11/24 职场文书
工作失职检讨书
2015/01/26 职场文书
幼师自荐信范文
2015/03/06 职场文书
2015年大学生入党自荐书
2015/03/24 职场文书
2015年校本培训工作总结
2015/07/24 职场文书
2016年植树节红领巾广播稿
2015/12/17 职场文书
Nginx+Windows搭建域名访问环境的操作方法
2022/03/17 Servers