js拖动层原形版
脚本文件:
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拖动层原形版的更多相关文章
- js拖动层
模仿网易彩票网(http://caipiao.163.com/)的登陆框自己做了一个拖动层,不过有点小问题——在谷歌浏览拖动的时候鼠标状态变成了文字状态(cursor:text;) <!DOCT ...
- JQuery 拖动层
<html> <head> <meta http-equiv="Content-Type" content="text/html; char ...
- JS拖动DIV布局
方法一: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3 ...
- 在chrome下鼠标拖动层变文本形状的问题
学JQ也有一段时间了,想自己写个鼠标拖动层移动的效果(很简单,只是为了练习而已)于是就写下了下面的代码 <!DOCTYPE html> <html> <head> ...
- 微信小程序-05-详解介绍.js 逻辑层文件
上一篇介绍了关于.json 的配置文件,本篇介绍关于.js 逻辑层文件 微信小程序-05-详解介绍.js 逻辑层文件 宝典官方文档: https://developers.weixin.qq.com/ ...
- h5滑动方向、手机拖动层
做h5时需对手指滑动方向判断及拖动浮动层,本文代码适用于手机端h5页面,pc页面可使用onMouseDown.onMouseUp.onMouseMove.(本方法仅为功能实现原理和演示,可根据自己的需 ...
- 微信小程序-06-详解介绍.js 逻辑层文件-注册页面
上一篇介绍的是 app.js 逻辑层文件中注册程序,对应的每个分页面都会有的 js 文件中 page() 函数注册页面 微信小程序-06-详解介绍.js 逻辑层文件-注册页面 宝典官方文档: http ...
- JS 拖动原理
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- js操作文件 HTML5版
js操作文件 HTML5版,有需要的朋友可以参考下. <!DOCTYPE html> <html> <head> <title>JSFileReader ...
随机推荐
- java socket编程(网络编程)
一,网络编程中两个主要的问题 一个是如何准确的定位网络上一台或多台主机,另一个就是找到主机后如何可靠高效的进行数据传输. 在TCP/IP协议中IP层主要负责网络主机的定位,数据传输的路由,由IP地址可 ...
- [原创]cocos2d-x研习录-第三阶 特性之粒子系统
我想接触过游戏引擎的同学,对粒子系统应该不会陌生.它用于解决由大量按一定规则运动(变化)的微小物质在计算机上的生成和显示问题.粒子系统在游戏中有着非常广泛的应用,可以模拟很多现象,如火花.爆炸.烟雾. ...
- 空的安卓工程添加activity
1.编写类继承activity,并重写onCreate方法 package org.tonny; import android.app.Activity; import android.os.Bund ...
- Sql server 2008 R2 实现远程异地备份
1. 环境: a)两台同样的Sql Server 2008 R2 服务器 b)操作系统都是windows 2008 c)需要将102.108.0.1数据库MSGC远程备份到112.118.0.2的服务 ...
- api接口签名验证
由于http是无状态的,所以正常情况下在浏览器浏览网页,服务器都是通过访问者的cookie(cookie中存储的jsessionid)来辨别客户端的身份的,当客户端进行登录服务器也会将登录信息存放在服 ...
- IOS开发-图片上传
目前IOS端开发,图片上传到服务器分为两种,一种是直接上到服务器,一种是借助第三方储存(减少服务器压力). 一.直接上传到服务器 /** * 代码演示 */ //*******UIImagePNGRe ...
- [综] PCA降维
http://blog.json.tw/using-matlab-implementing-pca-dimension-reduction 設有m筆資料, 每筆資料皆為n維, 如此可將他們視為一個mx ...
- 拥有的50个CSS代码片段(上)
1. CSS 重置 ;;;font-size: 100%; font: inherit; vertical-align: baseline; outline: none; -webkit-box-si ...
- python---set集合
集合(set)是一个无序不重复元素的序列. #!/usr/bin/python3 student = ({'Tom', 'Jim', 'Mary', 'Tom', 'Jack', 'Rose'}) p ...
- H5摇一摇遇到的问题
一.如何对摇晃效果进行反馈 刚开始的处理方式是,摇晃过程中不做任何处理,但后来反馈说这种效果不好,好像就没有摇动一样,如果声音也不响的话,就真的和什么都没发生一样. 后来想了想,加入摇晃过程动画,就像 ...