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 相关文章推荐
Jsonp 跨域的原理以及Jquery的解决方案
May 18 Javascript
Jquery上传插件 uploadify v3.1使用说明
Jun 18 Javascript
各浏览器对document.getElementById等方法的实现差异解析
Dec 05 Javascript
Javascript学习笔记之 函数篇(二) : this 的工作机制
Jun 24 Javascript
AngularJS执行流程详解
Feb 17 Javascript
html5+canvas实现支持触屏的签名插件教程
May 08 Javascript
使用jquery的jsonp如何发起跨域请求及其原理详解
Aug 17 jQuery
js 两数组去除重复数值的实例
Dec 06 Javascript
浅析Vue 和微信小程序的区别、比较
Aug 03 Javascript
angular 实时监听input框value值的变化触发函数方法
Aug 31 Javascript
基于JS实现数字动态变化显示效果附源码
Jul 18 Javascript
Node 代理访问的实现
Sep 19 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 中执行系统外部命令
2006/10/09 PHP
浅析Yii中使用RBAC的完全指南(用户角色权限控制)
2013/06/20 PHP
typecho插件编写教程(五):核心代码
2015/05/28 PHP
详解PHP执行定时任务的实现思路
2015/12/21 PHP
thinkPHP框架实现的短信接口验证码功能示例
2018/06/20 PHP
addRule在firefox下的兼容写法
2006/11/30 Javascript
Textarea与懒惰渲染实现代码
2012/01/04 Javascript
javascript date格式化示例
2013/09/25 Javascript
详解angular2实现ng2-router 路由和嵌套路由
2017/03/24 Javascript
vue mint-ui 实现省市区街道4级联动示例(仿淘宝京东收货地址4级联动)
2017/10/16 Javascript
vue webpack打包优化操作技巧
2018/02/22 Javascript
Node.js爬取豆瓣数据实例分析
2018/03/05 Javascript
vue项目中vue-i18n和element-ui国际化开发实现过程
2018/04/25 Javascript
Vuex的基本概念、项目搭建以及入坑点
2018/11/04 Javascript
基于Element封装一个表格组件tableList的使用方法
2020/06/29 Javascript
JS的时间格式化和时间戳转换函数示例详解
2020/07/27 Javascript
jQuery实现可以扩展的日历
2020/12/01 jQuery
[02:24]DOTA2亚洲邀请赛 NAVI战队出场宣传片
2015/02/07 DOTA
python实现哈希表
2014/02/07 Python
Python设计模式之抽象工厂模式
2016/08/25 Python
Python如何获取系统iops示例代码
2016/09/06 Python
Python利用递归和walk()遍历目录文件的方法示例
2017/07/14 Python
django admin组件使用方法详解
2019/07/19 Python
Django实现CAS+OAuth2的方法示例
2019/10/30 Python
关于Pytorch的MLP模块实现方式
2020/01/07 Python
Python带参数的装饰器运行原理解析
2020/06/09 Python
python+excel接口自动化获取token并作为请求参数进行传参操作
2020/11/10 Python
CSS3 制作绽放的莲花采用效果叠加实现
2013/01/31 HTML / CSS
Omio波兰:全欧洲低价大巴、火车和航班搜索和比价
2018/02/16 全球购物
师范生的个人求职信范文
2014/01/04 职场文书
活动总结怎么写
2014/04/28 职场文书
2015年三好一满意工作总结
2015/07/24 职场文书
初中语文教师研修日志
2015/11/13 职场文书
我家女友可不止可爱呢 公开OP主题曲无字幕动画MV
2022/04/11 日漫
Mysql数据库group by原理详解
2022/07/07 MySQL
Centos7 Shell编程之正则表达式、文本处理工具详解
2022/08/05 Servers