<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,minimum-scale=1,user-scalable=no" />
<title>2-5单指拖拽</title>
<style>
body{
height: 2000px;
}
.backtop{
position: fixed;
right: 20px;
bottom: 20px;
width: 45px;
height: 45px;
line-height: 45px;
text-align: center;
background-color: rgba(0,0,0,0.6);
border-radius: 50%;
color: #fff;
font-size: 30px;
-webkit-tap-highlight-color: transparent;
} </style>
</head>
<body>
<a href="#" id="backtop" class="backtop">&uarr;</a>
<script> /* diffPoint是和startPoint一个差值,就是移动后和初始值的差值 movePoint是为move函数使用的,表示计算好的移动距离 */ function drag(el,options){
options.x = typeof options.x !== 'undefined' ? options.x : true;
options.y = typeof options.y !== 'undefined' ? options.y :false; if(!options.x && !options.y) return; //如果禁止了x轴和y轴拖动,返回. var curPoint = {
x:0,
y:0
};
var startPoint = {};
//move了才触发end,否则不触发end事件
var isTouchMove = false; el.addEventListener('touchstart',handleStart,false);
el.addEventListener('touchmove',handleMove,false);
el.addEventListener('touchend',handleEnd,false); function handleStart(ev){
var touch = ev.changedTouches[0]; startPoint.x = touch.pageX;
startPoint.y = touch.pageY;
}
function handleMove(ev){
//阻止有滚动条的默认行为,也可以在touchstart里面写
ev.preventDefault(); isTouchMove = true; var touch = ev.changedTouches[0];
var diffPoint = {};
var movePoint = {
x:0,
y:0
}; diffPoint.x = touch.pageX - startPoint.x;
diffPoint.y = touch.pageY - startPoint.y; if(options.x){
movePoint.x = diffPoint.x + curPoint.x;
}
if(options.y){
movePoint.y = diffPoint.y + curPoint.y;
} move(el,movePoint.x,movePoint.y);
} function handleEnd(ev){
if(!isTouchMove) return; //手指抬起时更新curPoint
var touch = ev.changedTouches[0]; curPoint.x += touch.pageX - startPoint.x;
curPoint.y += touch.pageY - startPoint.y; isTouchMove = false;
} function move(el,x,y){
x = x||0;
y = y||0; el.style.transform = 'translate3d(' +x+ 'px,' +y+ 'px,0)';
}
} </script>
<script>
var backtop = document.getElementById('backtop');
drag(backtop,{
x:true, //表示x轴可以拖动
y:true //表示y轴可以拖动
}); /* var curPoint = {
x:0,
y:0
} backtop.addEventListener('click',function(){
move(this,-10+curPoint.x,-10+curPoint.y);
curPoint.x += -10;
curPoint.y += -10;
},false);
function move(el,x,y){
x = x || 0;
y = y || 0;
el.style.transform = 'translate3d('+x+'px, '+y+'px,0)'
} */ </script>
</body>
</html>

移动端touch事件——单指拖拽的更多相关文章

  1. 在viewPager中双指缩放图片,双击缩放图片,单指拖拽图片

    我们就把这个问题叫做图片查看器吧,它的主要功能有: (项目地址:https://github.com/TZHANHONG/ImageViewer/releases/tag/1.0,里面的MyImage ...

  2. H5案例分享:移动端touch事件判断滑屏手势的方向

    移动端touch事件判断滑屏手势的方向 方法一 当开始一个touchstart事件的时候,获取此刻手指的横坐标startX和纵坐标startY: 当触发touchmove事件时,在获取此时手指的横坐标 ...

  3. 移动端多个DIV简单拖拽功能

    移动端多个DIV简单拖拽功能. 这个demo与之前写的一个例子差不了多少,只是这个多了一层遍历而已. <!DOCTYPE html> <html lang="en" ...

  4. 移动端H5混合开发,Touch触控,拖拽,长按, 滑屏 实现方案

    概述 近期由于产品快速原型开发的需要,不想用原声的方式开发App两端一起搞时间来不及,目前产品处于大量上feature的阶段,采用混合开发是最合适的选择,所以花了3天的时间研究怎么去实现移动端,拖拽, ...

  5. 原生js移动端touch事件实现上拉加载更多

    大家都知道jQuery里没有touch事件,所以在移动端使用原生js实现上拉加载效果还是很不错的,闲话不多说,代码如下: //获取要操作的元素 var objSection = document.ge ...

  6. 移动端 touch 事件的originalEvent

    对于移动端的触摸事件,我们通过touchstart.touchmove.touchend实现,PC端一般使用mousedown.mousemove.mouseup实现. 我们获取事件坐标,原生js获取 ...

  7. 移动端touch事件影响click事件以及在touchmove添加preventDefault导致页面无法滚动的解决方法

    这两天自己在写一个手机网页,用到了触屏滑动的特效,就是往右滑动的时候左侧隐藏的菜单从左边划出来. 做完之后在手机原生浏览器中运行正常,但在QQ和微信中打开,发现touchmove只会触发一次,而且to ...

  8. 移动端Touch事件基础

    1.三个常用的移动端事件 ontouchstart 手指按下时触发 ontouchmove 手指移动时触发 ontouchend 手动抬起时触发 注意:这些事件当作事件属性使用时,不兼容谷歌浏览器. ...

  9. 移动端touch事件封装

    <meta charset="utf-8"><meta name="viewport" content="width=device- ...

随机推荐

  1. 深入刨析tomcat 之---第7篇 这个是链接,如果使用idea 创建servlet工程

    recoded by 张艳涛 使用IDEA创建Servlet项目 使用IDEA创建Servlet项目

  2. webSocket实现多人聊天功能

    webSocket实现多人在线聊天 主要思路如下: 1.使用vue构建简单的聊天室界面 2.基于nodeJs 的webSocket开启一个socket后台服务,前端使用H5的webSocket来创建一 ...

  3. 解决跨网段intouch嵌入视频问题

    在自控项目中,一般会将视频网络和自控网络分开,分属于两个不同的逻辑网段,以避免局域网ip不够用的问题.这就造成了一个问题,如何实现在自控网络上位机访问摄像头并嵌入使用?这里其实很简单,因为这两个网络本 ...

  4. 【Web动画】科技感十足的暗黑字符雨动画

    本文将使用纯 CSS,带大家一步一步实现一个这样的科幻字符跳动背景动画.类似于这样的字符雨动画: 或者是类似于这样的: 运用在一些类似科技主题的背景之上,非常的添彩. 文字的竖排 首先第一步,就是需要 ...

  5. vulnhub-XXE靶机

    仅供个人娱乐 靶机信息 靶机下载地址:https://download.vulnhub.com/xxe/XXE.zip 一.主机探测 二.端口服务识别 nmap -sV 192.168.181.149 ...

  6. 大数据学习(20)—— Zookeeper介绍

    ZooKeeper是什么 就像相声大师冯巩每次出场都说:"亲爱的观众朋友们,我想死你们啦"一样,我再强调一次,学习大数据官网很重要.Zookeeper官网看这里ZooKeeper ...

  7. 浅谈Java类中的变量初始化顺序

    一.变量与构造器的初始化顺序 我们知道一个类中具有类变量.类方法和构造器(方法中的局部变量不讨论,他们是在方法调用时才被初始化),当我们初始化创建一个类对象时,其初始化的顺序为:先初始化类变量,再执行 ...

  8. azure获取vm运行状态

    az vm list -d -o json --query "[?name=='vm-name']" | jq '.[0].powerState' 输出vm信息 az vm lis ...

  9. git分支merge冲突 error: you need to resolve your current index first

    问题: 执行切换代码分支 git checkout featrue_2019-06-24 ,报错如下: error: you need to resolve your current index fi ...

  10. Windows 系统安装 git基础小白的简单操作包含基本输入命令

    首先  去官网下载git应用 https://git-scm.com/downloads  点击前往 安装的操作也比较简单,一直点击下一步 安装完成之后   在空白桌面点击是否有   Git  Gui ...