pc端移动端拖拽实现

	#div1 {
		width: 100px;
		height: 100px;
		background: red;
		position: absolute;
	}

  html

<div id="div1">
	</div>

  js

 1     window.onload = function () {
 2         var oDiv = document.getElementById(‘div1‘);
 3         //pc端
 4         oDiv.onmousedown = function (ev) {
 5             var oEvent = ev || event; //需要获取和事件相关的信息时使用
 6             var disX = oEvent.clientX - oDiv.offsetLeft;
 7             var disY = oEvent.clientY - oDiv.offsetTop;
 8
 9             document.onmousemove = function (ev) {
10                 var oEvent = ev || event;
11                 var l = oEvent.clientX - disX;
12                 var t = oEvent.clientY - disY;
13
14                 if (l < 0) {
15                     l = 0;
16                 } else if (l > document.documentElement.clientWidth - oDiv.offsetWidth) {
17                     l = document.documentElement.clientWidth - oDiv.offsetWidth;
18                 }
19
20                 if (t < 0) {
21                     t = 0;
22                 } else if (t > document.documentElement.clientHeight - oDiv.offsetHeight) {
23                     t = document.documentElement.clientHeight - oDiv.offsetHeight;
24                 }
25
26                 oDiv.style.left = l + ‘px‘;
27                 oDiv.style.top = t + ‘px‘;
28             };
29
30             document.onmouseup = function () {
31                 document.onmousemove = null;
32                 document.onmouseup = null;
33             };
34         };
35         //移动端
36         // 拖拽
37         // 获取节点
38         var block = document.getElementById("right");
39         var oW, oH;
40         // 绑定touchstart事件
41         oDiv.addEventListener("touchstart", function (e) {
42             var touches = e.touches[0];
43             oW = touches.clientX - oDiv.offsetLeft;
44             oH = touches.clientY - oDiv.offsetTop;
45             //阻止页面的滑动默认事件
46             document.addEventListener("touchmove", defaultEvent, false);
47         }, false);
48         oDiv.addEventListener("touchmove", function (e) {
49             var touches = e.touches[0];
50             var oLeft = touches.clientX - oW;
51             var oTop = touches.clientY - oH;
52             if (oLeft < 0) {
53                 oLeft = 0;
54             } else if (oLeft > document.documentElement.clientWidth - oDiv.offsetWidth) {
55                 oLeft = (document.documentElement.clientWidth - oDiv.offsetWidth);
56             }
57             oDiv.style.left = oLeft + "px";
58             oDiv.style.top = oTop + "px";
59         }, false);
60         oDiv.addEventListener("touchend", function () {
61             document.removeEventListener("touchmove", defaultEvent, false);
62         }, false);
63
64         function defaultEvent(e) {
65             e.preventDefault();
66         };
67     };

原文地址:https://www.cnblogs.com/NB-JDzhou/p/8430142.html

时间: 2024-10-10 16:16:05

pc端移动端拖拽实现的相关文章

javascript小实例,PC网页里的拖拽(转)

这是现在的效果,可能改了一些,原来的效果是,里面的这张图是可以上下左右拖动的,然后房子上面的显示的楼栋号,也跟着图片一起移动,当时js能力还不行,未能实现项目经理的要求,不过后来项目经理又把这个效果推掉了,换了另外的一个效果 尽管项目经理不想要这个效果了,但是当时就在我心里留下了一个节,到今天都忘不了这个梗. 好了,这就是我今天想写这篇博客的初衷,希望能给想实现这类拖拽效果,但是不知道该怎么去实现的同学,提供一种思路,不给青春留遗憾,当然实现拖拽的方法有很多,这里就只介绍JavaScript中的

pc端拖拽事件

<html><head> <meta charset="utf-8"/> <title></title> <style type="text/css"> #box{ width: 208px; height: 208px; background: url(girl.gif) no-repeat; position: absolute; } </style></head>&

移动端关于拖拽事件

探究一下移动端的拖拽!因为html5出来了一个drag么!然后就兴致勃勃的去试了试,结果发现drag在pc端使用好使,但是在移动端不好用,然后在网上查了一下,有关于各个浏览器对drag的支持状况,在此附上链接一枚(想具体了解可以看看): http://caniuse.com/#search=Drag 没办法就就开始想别的办法,结果发现好多人用touch事件,所以便试了试,效果还算不错,自己写的就不上代码了,就把参考的一片文章附上供大家参考参考: -------------------------

移动端可拖拽效果

<!doctype html>移动端可拖拽效果 拖拽效果测试,PC浏览器访问,需打开控制台进入移动模式. 拖我 原文地址:https://www.cnblogs.com/webfby/p/11105370.html

移动端拖拽(模块化开发,触摸事件,webpack)

通过jquery可以很容易实现CP端的拖拽.但是在移动端却不好用了.于是我自己写了一个在移动端的拖拽demo,主要用到的事件是触摸事件(touchstart,touchmove和touchend). 这个demo实现的功能是:可以拖拽的元素(在这里是图片)位于列表中,这些元素可以被拖到指定区域,到达指定区域(控制台)后,元素被插入控制台后,原来的拖动元素返回原位置,新的元素依然可以在控制台中拖动,也能拖出控制台. 在这个demo中一个用三个模块,分别为ajax模块,drag模块,position

移动端的拖拽这个demo实现的功能

SQL数据库适合那些需求确定和对数据完整性要去严格的项目.NoSQL数据库适用于那些对速度和可扩展性比较看重的那些不相关的,不确定和不断发展的需求. 总所周知,网页的加载速度跟图片是有很大的关系的,因为在不影响图片质量的情况下,减小图片的大小显得尤为重要. 这个demo实现的功能是:可以拖拽的元素(在这里是图片)位于列表中,这些元素可以被拖到指定区域,到达指定区域(控制台)后,元素被插入控制台后,原来的拖动元素返回原位置,新的元素依然可以在控制台中拖动,也能拖出控制台. 由于网页支付基于JS-S

移动端可拖拽悬浮窗+点击事件

<!DOCTYPE html><html lang="en"> <head> <meta charset="utf-8"> <!--设置viewport--> <meta name="viewport" content="width=device-width,initial-scale=1.0,user-scalable=0"/> </head>

html5移动端拖拽

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta content="width=device-width,initial-scale=1.0" name="viewport"/> <title>论坛列表</title> <link href="

APP快速开发:PC、移动端多项目整合,learun让开发更畅快

以前我们针对快速开发框架的PC模式进行过详细的探讨,了解到一套合适的快速开发框架对一个企业的重要性,今天我们继续以learun框架为基础蓝本,探讨一下其在APP快速开发中的作用. learun技术支撑 (1)前台技术:ajax+Jquery+jqgrid+Bootstrap (2)开发环境:VS2012-VS2015 (3)数据库:SQL Server,Oracle.Mysql (4)后台技术:ASP.NET MVC,TinyIoc(IoC容器),EF(ORM框架),Log4Net,NPOI等