脚本文件:

function JzDrag(moveDivId, moveDivHandle) {
//
var me = this;
this.M = false; //是否在移动对象
this.DX = { x: 0, y: 0 }; //保存起始位置和元素的位置差
this.Div = document.getElementById(moveDivId); //移动对象
this.Handle = moveDivHandle ? document.getElementById(moveDivHandle) : this.Div; //移动句柄 function GetPos(evt) {
// 获取鼠标位置
evt = evt || window.event;
var xPos = evt.pageX ? evt.pageX : (evt.clientX + Math.max(document.documentElement.scrollLeft, document.body.scrollLeft) - document.body.clientLeft);
var yPos = evt.pageX ? evt.pageY : (evt.clientY + Math.max(document.documentElement.scrollTop, document.body.scrollTop) - document.body.clientTop);
return { "x": xPos, "y": yPos };
} function LocaionSave(x, y) {
// 保存临时数据
me.DX.x = parseInt(me.Div.style.left.toString().replace('px', '')) - x;
me.DX.y = parseInt(me.Div.style.top.toString().replace('px', '')) - y;
}
function LocationSet(x, y) {
// 设置移动位置
me.Div.style.left = (x + me.DX.x) + 'px';
me.Div.style.top = (y + me.DX.y) + 'px';
} function MouseDown(e) {
//
e.preventDefault();
me.M = true; var pos = GetPos(e);
LocaionSave(pos.x, pos.y); if (me.Handle.setCapture) {
me.Handle.setCapture();
}
else if (window.captureEvents) {
window.captureEvents(Event.MOUSEMOVE | Event.MOUSEUP);
}
}
function MouseMove(e) {
//
e.preventDefault();
if (me.M == false) return; var pos = GetPos(e);
LocationSet(pos.x, pos.y);
}
function MouseUp(e) {
//
e.preventDefault();
me.M = false; if (me.Handle.releaseCapture) {
me.Handle.releaseCapture();
}
else if (window.releaseEvents) {
window.releaseEvents(Event.MOUSEMOVE | Event.MOUSEUP);
}
} function TouchStart(e) {
//
e.preventDefault();
me.M = true; var touch = e.touches[0];
LocaionSave(touch.pageX, touch.pageY);
}
function TouchMove(e) {
//
e.preventDefault();
if (me.M == false) return; var touch = e.touches[0];
LocationSet(touch.pageX, touch.pageY);
}
function TouchEnd(e) {
//
e.preventDefault();
me.M = false; } this.Handle.onmousedown = MouseDown;
this.Handle.onmousemove = MouseMove;
this.Handle.onmouseup = MouseUp; this.Handle.addEventListener("touchstart", TouchStart, false); //事件区分大小写
this.Handle.addEventListener("touchmove", TouchMove, false);
this.Handle.addEventListener("touchend", TouchEnd, false);
}

页面:

<div id="Div1" style="position:absolute;background-color:#FF4F0F; left:50px; top:60px; width:160px;height:80px;">
<h1 id="Div1m" style="line-height:30px; background-color:#f3f3f3;">拖动标题移动</h1>
</div> <div id="Div2" style="position:absolute;background-color:#FF4F0F; left:150px; top:160px; width:160px;height:80px;">
整个移动
</div>

调用:

new JzDrag('Div1', 'Div1m');
new JzDrag('Div2');

js拖动层原形版的更多相关文章

  1. js拖动层

    模仿网易彩票网(http://caipiao.163.com/)的登陆框自己做了一个拖动层,不过有点小问题——在谷歌浏览拖动的时候鼠标状态变成了文字状态(cursor:text;) <!DOCT ...

  2. JQuery 拖动层

    <html> <head> <meta http-equiv="Content-Type" content="text/html; char ...

  3. JS拖动DIV布局

    方法一: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3 ...

  4. 在chrome下鼠标拖动层变文本形状的问题

    学JQ也有一段时间了,想自己写个鼠标拖动层移动的效果(很简单,只是为了练习而已)于是就写下了下面的代码 <!DOCTYPE html> <html> <head> ...

  5. 微信小程序-05-详解介绍.js 逻辑层文件

    上一篇介绍了关于.json 的配置文件,本篇介绍关于.js 逻辑层文件 微信小程序-05-详解介绍.js 逻辑层文件 宝典官方文档: https://developers.weixin.qq.com/ ...

  6. h5滑动方向、手机拖动层

    做h5时需对手指滑动方向判断及拖动浮动层,本文代码适用于手机端h5页面,pc页面可使用onMouseDown.onMouseUp.onMouseMove.(本方法仅为功能实现原理和演示,可根据自己的需 ...

  7. 微信小程序-06-详解介绍.js 逻辑层文件-注册页面

    上一篇介绍的是 app.js 逻辑层文件中注册程序,对应的每个分页面都会有的 js 文件中 page() 函数注册页面 微信小程序-06-详解介绍.js 逻辑层文件-注册页面 宝典官方文档: http ...

  8. JS 拖动原理

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  9. js操作文件 HTML5版

    js操作文件 HTML5版,有需要的朋友可以参考下. <!DOCTYPE html> <html> <head> <title>JSFileReader ...

随机推荐

  1. Codeforces Round #167 (Div. 2)

    C. Dima and Staircase 线段树维护区间最大值. D. Dima and Two Sequences 由于模数不一定为质数,所以通过拆分质因数来做阶乘取模. E. Dima and ...

  2. LINUX测试环境部署mysql(三)

    安装配置mysql 1.安装 查看有没有安装过: yum list installed mysql* rpm -qa | grep mysql* 查看有没有安装包: yum list mysql* 安 ...

  3. redis主从配置

    首先安装redis 我的redis安装在/app/redis/文件夹下 第二步,写两个redis实例的配置文件,一主一从.我的设计如下,6379端口为主,6380端口为从. 6379:redis_ma ...

  4. XMLHttpRequest

    XMLHttpRequest对象的方法 abort() 取消当前所发出的请求 getAllResponseHeaders() 取得所有的HTTP头信息 getResponseHeader() 取得一个 ...

  5. virtual file system (VFS)

    http://www.ibm.com/developerworks/library/l-virtual-filesystem-switch/ http://www.ibm.com/developerw ...

  6. AMD高级应用(翻译)

    Dojo now supports modules written in the Asynchronous Module Definition (AMD) format, which makes co ...

  7. 无废话WCF

    1.什么是WCF 2.WCF应用的通信过程 3.WCF宿主 4.WCF配置文件 5.WCF通信模式 6.一个简单的DEMO

  8. 在PHP中调用接口

    引用:http://zhidao.baidu.com/question/454935450.html&__bd_tkn__=67bd5d3a742a8b244e09a86fb8b824aa95 ...

  9. 使用Jenkins可持续集成maven项目

    首先下载最新的Jenkins的war包,放在tomcat的webapps的目录下,然后运行,例如: http://121.42.62.45:8080/jenkins/ 然后按照一步步的提示,下载相关的 ...

  10. IOS ScrollView放大缩小点击位置并居中

    项目中的一个优化案例,提升用户体验,对地铁线路图点击放大.缩小,并且点击位置居中: 正常ScrollView 我们点击某一点比如屏幕右侧,想要点的位置向左移动到中心位置,很简单只有算出该点位置距中心位 ...