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 相关文章推荐
Javascript 学习笔记 错误处理
Jul 30 Javascript
Firebug 字幕文件JSON地址获取代码
Oct 28 Javascript
JS实现图片无间断滚动代码汇总
Jul 30 Javascript
javascript中if和switch,==和===详解
Jul 30 Javascript
Jquery和angularjs获取check框选中的值的方法汇总
Jan 17 Javascript
AngularJS实现单一页面内设置跳转路由的方法
Jun 28 Javascript
Vue2 SSR渲染根据不同页面修改 meta
Nov 20 Javascript
jQuery图片加载失败替换默认图片方法汇总
Nov 29 jQuery
详解微信小程序canvas圆角矩形的绘制的方法
Aug 22 Javascript
angularJs自定义过滤器实现手机号信息隐藏的方法
Oct 08 Javascript
jquery实现动态创建form并提交的方法示例
May 27 jQuery
微信小程序实现滑动操作代码
Apr 23 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
NOT NULL 和NULL
2007/01/15 PHP
Codeigniter实现处理用户登录验证后的URL跳转
2014/06/12 PHP
php常用字符串比较函数实例汇总
2014/11/24 PHP
在Debian系统下配置LNMP的教程
2015/07/09 PHP
PHP中用Trait封装单例模式的实现
2019/12/18 PHP
一个简单的javascript类定义例子
2009/09/12 Javascript
javascript中检测变量的类型的代码
2010/12/28 Javascript
Javascript 面向对象(一)(共有方法,私有方法,特权方法)
2012/05/23 Javascript
jQuery中hover方法和toggle方法使用指南
2015/02/27 Javascript
JavaScript通过prototype给对象定义属性用法实例
2015/03/23 Javascript
Nodejs实战心得之eventproxy模块控制并发
2015/10/27 NodeJs
jQuery图片前后对比插件beforeAfter用法示例【附demo源码下载】
2016/09/20 Javascript
二维码图片生成器QRCode.js简单介绍
2017/08/18 Javascript
原生JS写Ajax的请求函数功能
2017/12/22 Javascript
详解html-webpack-plugin用法全解
2018/01/22 Javascript
菊花转动的jquery加载动画效果
2018/08/19 jQuery
Node爬取大批量文件的方法示例
2019/06/28 Javascript
Openlayers+EasyUI Tree动态实现图层控制
2020/09/28 Javascript
[02:31]2014DOTA2国际邀请赛2009专访:干爹表现出乎意料 看好DK杀回决赛
2014/07/20 DOTA
python将人民币转换大写的脚本代码
2013/02/10 Python
python实现的阳历转阴历(农历)算法
2014/04/25 Python
Python文件和流(实例讲解)
2017/09/12 Python
python实现数据库跨服务器迁移
2018/04/12 Python
python调用百度语音识别api
2018/08/30 Python
Python箱型图绘制与特征值获取过程解析
2019/10/22 Python
Python 获取numpy.array索引值的实例
2019/12/06 Python
Python如何在单元测试中给对象打补丁
2020/08/03 Python
python 用struct模块解决黏包问题
2020/11/07 Python
通过代码简单了解django model序列化作用
2020/11/12 Python
selenium学习教程之定位以及切换frame(iframe)
2021/01/04 Python
pandas map(),apply(),applymap()区别解析
2021/02/24 Python
Diamondback自行车:拥有你的冒险
2019/04/22 全球购物
护理工作个人总结
2015/03/03 职场文书
2016年度基层党建工作公开承诺书
2016/03/25 职场文书
Pytest之测试命名规则的使用
2021/04/16 Python
SQLServer 错误: 15404,无法获取有关 Windows NT 组/用户 WIN-8IVSNAQS8T7\Administrator 的信息
2021/06/30 SQL Server