js实现拖拽兼容pc端和手机端

pc端拖动时候用到的三个事件:mousedown、mousemove、mouseup

在移动端与之相对应的分别是:touchstart、touchmove、touchend事件。

还有一点要注意的是在PC端获取当前鼠标的坐标是:event.clientX和event.clientY,

在移动端获取坐标位置则是:event.touches[0].clientX和event.touches[0].clientY

//判断当前是touch还是clickvar touch;
if(event.touches) {
    touch = event.touches[0];
} else {
    touch = event;
}
<!DOCTYPE html>
<html lang="en">

	<head>
		<meta charset="UTF-8">
		<title>适配移动端和pc端的拖动效果</title>
		<style>
			#div2 {
				position: relative;
				top: 0;
				left: 0;
				width: 100px;
				height: 100px;
				background: #bbbbbb;
				touch-action: none;
			}
		</style>
	</head>

	<body>
		<div id="div2"></div>

		<script>
			//是否拖动
			var flag = false;
			//
			var cur = {
				x: 0,
				y: 0
			}
			var nx, ny, dx, dy, x, y;

			function down() {
				flag = true;
				var touch;
				if(event.touches) {
					touch = event.touches[0];
				} else {
					touch = event;
				}
				cur.x = touch.clientX;
				cur.y = touch.clientY;
				dx = div2.offsetLeft;
				dy = div2.offsetTop;
			}

			function move() {
				if(flag) {
					var touch;
					if(event.touches) {
						touch = event.touches[0];
					} else {
						touch = event;
					}
					nx = touch.clientX - cur.x;
					ny = touch.clientY - cur.y;
					x = dx + nx;
					y = dy + ny;
					div2.style.left = x + "px";
					div2.style.top = y + "px";
					//阻止页面的滑动默认事件
					document.addEventListener("touchmove", function() {
						event.preventDefault();
					}, false);
				}
			}
			//鼠标释放时候的函数
			function end() {
				flag = false;
			}
			var div2 = document.getElementById("div2");
			div2.addEventListener("mousedown", function() {
				down();
			}, false);
			div2.addEventListener("touchstart", function() {
				down();
			}, false)
			div2.addEventListener("mousemove", function() {
				move();
			}, false);
			div2.addEventListener("touchmove", function() {
				move();
			}, false)
			document.body.addEventListener("mouseup", function() {
				end();
			}, false);
			div2.addEventListener("touchend", function() {
				end();
			}, false);
		</script>
	</body>

</html>

  

原文地址:https://www.cnblogs.com/150536FBB/p/9965806.html

时间: 2024-11-10 07:30:12

js实现拖拽兼容pc端和手机端的相关文章

PC端变成手机端的时候,把特效去掉(把canvas标签去掉)

PC端变成手机端的时候,把特效去掉(把canvas标签去掉)<script> if (screen.width < 768){ $('canvas').remove(); }</script> /*if($('window').width()<768){ $('canvas').css('display','none'); }*/ jQuery这种方法获取不到

java端判断请求来自pc端还是手机端

记录是为了更好的成长! 在项目中遇到一个问题,需要判断请求是来自pc端还是手机端,如下直接贴代码: /** * 判断请求来自手机端还是电脑端 */ public static boolean isMobileDevice(String requestHeader) { /* * android :所有安卓设备 * mas os :iphone * windows phone :windows系统手机 */ String[] deviceArray = new String[] {"android

js判断PC端还是手机端

if(/Android|webOS|iPhone|iPod|BlackBerry/i.test(navigator.userAgent)) { window.location.href = "手机版网址"; } else { window.location.href = "PC端网址"; }   原文地址:https://www.cnblogs.com/go-wandering/p/8658566.html

php 判断是用户是pc端还是手机端访问的方法

function getBrowserType(){ $is_mobile = false; $mobile_os_list=array('Google Wireless Transcoder','Windows CE','WindowsCE','Symbian','Android','armv6l','armv5','Mobile','CentOS','mowser','AvantGo','Opera Mobi','J2ME/MIDP','Smartphone','Go.Web','Palm'

根据当前设备环境来做pc端和手机端网页显示

当你的网页使用了两套代码(移动端和pc端代码)来显示你的网页时,就需要用到这种方法: 手机端: if (!/Android|webOS|iPhone|iPod|BlackBerry/i.test(navigator.userAgent)) { window.location.href = "http://你的pc端网址"; } 电脑端: if (/Android|webOS|iPhone|iPod|BlackBerry/i.test(navigator.userAgent)) { wi

JAVA-判断请求来自PC端还是手机端

某些情形,我们需要判断Http请求是来自手机端还是电脑端,关键是取得User-Agent的信息,进行筛选判断即可. 核心类如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 public static boolean  isMobileDevice(String requestHeader){         /**          * android : 所有android设备          * mac os : iphone ipad      

使用JS进行pc端、手机端判断

<script type="text/javascript">            (function(){                var ua = navigator.userAgent.toLowerCase();                var bIsIpad = ua.match(/ipad/i) == "ipad";                var bIsIphoneOs = ua.match(/iphone os/i) 

&lt; meta &gt; 元素(pc端与手机端)

< meta > 元素 概要 标签提供关于HTML文档的元数据.元数据不会显示在页面上,但是对于机器是可读的.它可用于浏览器(如何显示内容或重新加载页面),搜索引擎(关键词),或其他 web 服务. —— W3School 必要属性 属性 值 描述 content some text 定义与http-equiv或name属性相关的元信息 可选属性 属性 值 描述 http-equiv content-type / expire / refresh / set-cookie 把content属性

基于Springmvc+Spring+Mybatis+Bootstrap+jQuery Mobile +MySql教务管理系统(分为PC端和手机端)

刚开始我也不信,可自己根据http://url.cn/TgrIZT注册一下,然后通过这个网站获取了学习卡的用户名和密码之后,真的有200元抵用券到了自己的账户中,所以,我就买了一些课程,自从在北风网学习了一些课程之后,我感觉自己对于提成技能特别高,可能和自己刚刚毕业有关系,在学校每天都是理论知识,没有过多的时间,但是自从在北风网上学习了一些项目的知识之后,尤其和老师们一起做项目,我起初以为只是简单的视频教程,谁知道和培训机构一样,老师还可以给你解答问题,费用只相当于培训机构的10%,后来自己又学