JS实现网页Div层Clone拖拽效果


Posted in Javascript onSeptember 26, 2015

本文实例讲述了JS实现网页Div层Clone拖拽效果。分享给大家供大家参考。具体如下:

这是一个层拖动,网页上的拖拽Clone效果实例,两个层可在鼠标的拖动下,任意改变位置,智能判断层级,也就是智能判断自身是否处于最高层,最高处的层是不会被其它层遮挡的。

运行效果截图如下:

JS实现网页Div层Clone拖拽效果

在线演示地址如下:

<!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=utf-8" />
<title>拖拽--Clone</title>
<style type="text/css"> 
body,div{margin:0;padding:0;}
body{background:#3e3e3e;}
div{position:absolute;width:100px;height:100px;cursor:move;border:1px solid #888;background:#000;}
#drag1{top:100px;left:100px;}
#drag2{top:100px;left:300px;}
#temp{opacity:0.3;filter:alpha(opacity=30);}
</style>
<script type="text/javascript"> 
var zIndex = 1;
window.onload = function ()
{
 var oDrag1 = document.getElementById("drag1");
 var oDrag2 = document.getElementById("drag2");
 drag(oDrag1);
 drag(oDrag2);
};
function drag(oDrag)
{
 var disX = dixY = 0;
 oDrag.onmousedown = function (event)
 {
  var event = event || window.event;
  disX = event.clientX - this.offsetLeft;
  disY = event.clientY - this.offsetTop;  
  var oTemp = document.createElement("div");
  oTemp["id"] = "temp";
  oTemp.style.left = this.currentStyle ? this.currentStyle["left"] : getComputedStyle(this, null)["left"];
  oTemp.style.top = this.currentStyle ? this.currentStyle["top"] : getComputedStyle(this, null)["top"];
  oTemp.style.zIndex = zIndex++;
  document.body.appendChild(oTemp);
  document.onmousemove = function (event)
  {
   var event = event || window.event;
   var iL = event.clientX - disX;
   var iT = event.clientY - disY;
   var maxL = document.documentElement.clientWidth - oDrag.offsetWidth;
   var maxT = document.documentElement.clientHeight - oDrag.offsetHeight
   iL <= 0 && (iL = 0);
   iT <= 0 && (iT = 0);
   iL >= maxL && (iL = maxL);
   iT >= maxT && (iT = maxT);
   oTemp.style.left = iL + "px";
   oTemp.style.top = iT + "px";
   return false;
  };
  document.onmouseup = function ()
  {
   document.onmousemove = null;
   document.onmouseup = null;
   oDrag.style.left = oTemp.style.left;
   oDrag.style.top = oTemp.style.top;
   oDrag.style.zIndex = oTemp.style.zIndex;
   document.body.removeChild(oTemp);
   oDrag.releaseCapture && oDrag.releaseCapture()
  };
  this.setCapture && this.setCapture();  
  return false
 } 
}
</script>
</head>
<body>
<div id="drag1"></div>
<div id="drag2"></div>
</body>
</html>

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

Javascript 相关文章推荐
Some tips of wmi scripting in jscript (1)
Apr 03 Javascript
innerhtml用法 innertext用法 以及innerHTML与innertext的区别
Oct 26 Javascript
ExtJS如何设置与获取radio控件的选取状态
Jan 22 Javascript
jQuery实现页面内锚点平滑跳转特效的方法总结
May 11 Javascript
基于jQuery实现仿51job城市选择功能实例代码
Mar 02 Javascript
Javascript基础_简单比较undefined和null 值
Jun 14 Javascript
微信小程序 实战实例开发流程详细介绍
Jan 05 Javascript
JS实现加载时锁定HTML页面元素的方法
Jun 24 Javascript
基于jQuery实现手风琴菜单、层级菜单、置顶菜单、无缝滚动效果
Jul 20 jQuery
详解基于Angular4+ server render(服务端渲染)开发教程
Aug 28 Javascript
JavaScript中变量提升与函数提升经典实例分析
Jul 26 Javascript
JavaScript插入排序算法原理与实现方法示例
Aug 06 Javascript
jQuery超简单选项卡完整实例
Sep 26 #Javascript
angularjs学习笔记之简单介绍
Sep 26 #Javascript
JavaScript判断手机号运营商是移动、联通、电信还是其他(代码简单)
Sep 25 #Javascript
JS实现仿QQ效果的三级竖向菜单
Sep 25 #Javascript
微信支付如何实现内置浏览器的H5页面支付
Sep 25 #Javascript
JS+CSS实现仿支付宝菜单选中效果代码
Sep 25 #Javascript
jQuery EasyUI实现右键菜单变灰不可用效果
Sep 24 #Javascript
You might like
第六节--访问属性和方法
2006/11/16 PHP
php+mysql实现无限级分类
2015/11/11 PHP
php版微信公众号接口实现发红包的方法
2016/10/14 PHP
Js之软键盘实现(js源码)
2007/01/30 Javascript
firefox下对ajax的onreadystatechange的支持情况分析
2009/12/14 Javascript
js+css实现增加表单可用性之提示文字
2013/06/03 Javascript
Nodejs极简入门教程(一):模块机制
2014/10/25 NodeJs
Javascript中使用A标签获取当前目录的绝对路径方法
2015/03/02 Javascript
AngularJS中$watch和$timeout的使用示例
2016/09/20 Javascript
js自定义瀑布流布局插件
2017/05/16 Javascript
关于jquery form表单序列化的注意事项详解
2017/08/01 jQuery
React事件处理的机制及原理
2018/12/03 Javascript
微信小程序实现的图片保存功能示例
2019/04/24 Javascript
如何使用webpack打包一个库library的方法步骤
2019/12/18 Javascript
微信小程序国际化探索实现(附源码地址)
2020/05/20 Javascript
Vant 中的Toast设置全局的延迟时间操作
2020/11/04 Javascript
[13:16]INFAMOUS vs VGJ T BO3
2018/06/07 DOTA
简析Python的闭包和装饰器
2016/02/26 Python
详解Python自建logging模块
2018/01/29 Python
python变量的作用域是什么
2020/05/26 Python
Python爬虫爬取百度搜索内容代码实例
2020/06/05 Python
python mysql中in参数化说明
2020/06/05 Python
Python Unittest原理及基本使用方法
2020/11/06 Python
Python 利用Entrez库筛选下载PubMed文献摘要的示例
2020/11/24 Python
CSS3 优势以及网页设计师如何使用CSS3技术
2009/07/29 HTML / CSS
利用css3画个同心圆示例代码
2017/07/03 HTML / CSS
什么是静态路由,其特点是什么?什么是动态路由,其特点是什么?
2013/07/26 面试题
什么是makefile? 如何编写makefile?
2013/01/02 面试题
为什么要用EJB
2014/04/17 面试题
高级方案规划工程师岗位职责
2013/11/29 职场文书
合同专员岗位职责
2013/12/18 职场文书
店长职务说明书
2014/02/04 职场文书
家长建议怎么写
2014/05/15 职场文书
优秀大专毕业生求职信
2014/08/04 职场文书
2015年城管执法工作总结
2015/07/23 职场文书
AngularJS实现多级下拉框
2022/03/25 Javascript