脚本文件:

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. 启用Servlet 3.0新特性——注解支持

    Servlet 3.0版本新增注解支持,可是在实际使用中,添加的注解总是不起作用.经过检查,原来是“web.xml”文件的顶级标签“<web-app/>”中的一个叫做“metadata-c ...

  2. python 3 学习笔记 (三)

    1. 字典 定义:{key1:value1,key2:value2},key-value结构,key必须可hash特性:1.可存放多个值2.可修改指定key对应的值,可变3.无序 1.1. 创建字典 ...

  3. ie 8 下post提交提交了两次

    擦你吗呀,IE8! 老子写一个登录功能,IE他妈的给我登录了两次,导致权限校验错误,什么他妈的鬼问题,调了两天....fuck,都是泪水. 解决方案:提交按钮加返回值<input type=&q ...

  4. windows平台编译bgfx

    1.下载bgfx工程并解压到任意目录,链接:https://github.com/bkaradzic/bgfx/ 2.下载bx工程并解压到bgfx工程所在父目录,链接:https://github.c ...

  5. relative

    进行relative定位后的元素,不会影响原本的文本流. 下图左列的第二张图是进行了margin-top取负值,右列第二张图进行了relative定位     

  6. MongoDB学习笔记九:分片

    分片(sharding)是指将数据拆分,将其分散存在不同的机器上的过程.有事也用分区(partitioning)来表示这个概念.将数据分散到不同的机器上,不需要功能强大的大型计算机既可以存储更多的数据 ...

  7. [BZOJ 3637]Query on a tree VI

    偶然看见了这题,觉得自己 QTREE.COT 什么的都没有刷过的真是弱爆了…… 一道思路很巧妙的题,终于是在约大爷的耐心教导下会了,真是太感谢约大爷了. 这题显然是树链剖分,但是链上维护的东西很恶心. ...

  8. Android 数据处理之Webapi OAuth2.0

    前面通过.net Webapi搭建了数据访问及处理平台,以下介绍如何通过Android来访问Webapi的数据. Android的常用的网络访问方式是使用HttpClient和HttpURLConne ...

  9. C++语法

    http://stackoverflow.com/questions/4269034/what-is-the-meaning-of-prepended-double-colon

  10. oracle单机改变归档路径

    oracle 归档日志文件路径设置 1.  查看LOG_ARCHIVE_DEST 与 ( LOG_ARCHIVE_DEST_n 或 DB_RECOVERY_FILE_DEST )参数情况注意(  LO ...