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 相关文章推荐
jquery 插件 web2.0分格的分页脚本,可用于ajax无刷新分页
Dec 25 Javascript
修改jquery.lazyload.js实现页面延迟载入
Dec 22 Javascript
jQuery中验证表单提交方式及序列化表单内容的实现
Jan 06 Javascript
js密码强度校验
Nov 10 Javascript
javascript基本算法汇总
Mar 09 Javascript
基于jQuery的select下拉框选择触发事件实例分析
Nov 18 Javascript
纯JS实现图片验证码功能并兼容IE6-8(推荐)
Apr 19 Javascript
vue实现导航栏效果(选中状态刷新不消失)
Dec 13 Javascript
vue项目使用微信公众号支付总结及遇到的坑
Oct 23 Javascript
vue组件间的参数传递实例详解
Apr 26 Javascript
js消除图片小游戏代码
Dec 11 Javascript
有趣的JavaScript隐式类型转换操作实例分析
May 02 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
PHP怎样调用MSSQL的存储过程
2006/10/09 PHP
PHP中替换键名的简易方法示例详解
2014/01/07 PHP
smarty模板引擎中内建函数if、elseif和else的使用方法
2015/01/22 PHP
php使用post数组的键值创建同名变量并赋值的方法
2015/04/03 PHP
php防止CC攻击代码 php防止网页频繁刷新
2015/12/21 PHP
JavaScript 组件之旅(四):测试 JavaScript 组件
2009/10/28 Javascript
JavaScript类和继承 prototype属性
2010/09/03 Javascript
javascript中的onkeyup和onkeydown区别介绍
2013/04/28 Javascript
jquery使用append(content)方法注意事项分享
2014/01/06 Javascript
通过遮罩层实现浮层DIV登录的js代码
2014/02/07 Javascript
JavaScript设计模式之建造者模式介绍
2014/12/28 Javascript
JS+CSS实现感应鼠标渐变显示DIV层的方法
2015/02/20 Javascript
Windows系统中安装nodejs图文教程
2015/02/28 NodeJs
JS实现点击按钮获取页面高度的方法
2015/11/02 Javascript
学习使用AngularJS文件上传控件
2016/02/16 Javascript
javascript数字验证的实例代码(推荐)
2016/08/20 Javascript
AngularJS Phonecat实例讲解
2016/11/21 Javascript
关于vue.js v-bind 的一些理解和思考
2017/06/06 Javascript
AngularJS自定义过滤器用法经典实例总结
2018/05/17 Javascript
javascript中数组的常用算法深入分析
2019/03/12 Javascript
vue实现点击追加选中样式效果
2019/11/01 Javascript
微信小程序语音同步智能识别的实现案例代码解析
2020/05/29 Javascript
[03:08]迎霜节狂欢!2018年迎霜节珍藏Ⅰ一览
2018/12/25 DOTA
详解Python中DOM方法的动态性
2015/04/11 Python
Python切片操作去除字符串首尾的空格
2019/04/22 Python
CSS3 :default伪类选择器使用简介
2018/03/15 HTML / CSS
耐克巴西官方网站:Nike巴西
2016/08/14 全球购物
Conforama瑞士:家具、厨房、电器、装饰
2020/09/06 全球购物
广州足迹信息技术有限公司Java软件工程师试题
2014/02/15 面试题
文员的职业生涯规划发展方向
2014/02/08 职场文书
计算机应用专业自荐信
2014/07/05 职场文书
2014年便民服务中心工作总结
2014/12/20 职场文书
先进人物事迹材料
2014/12/29 职场文书
黑白记忆观后感
2015/06/18 职场文书
教师岗位说明书
2015/09/30 职场文书
vue实现简易音乐播放器
2022/08/14 Vue.js