「移动端」touch事件,touchEvent对象
随着智能手机普及,有越来越多的手机网页和网页版游戏,手机触摸、移动、旋转等等,多种操作。一般电脑的人机交互靠的是鼠标,而手机用的就是触摸。区别有:
- PC 端一个电脑只能有一个鼠标,而移动端有多点触摸。
- PC 端添加效果使用 mouseup、mousedown、mousemove,而移动端使用的 touchstart、touchmove、touchend 。
一、touch事件类型
- touchstart - 手指触摸屏幕,在元素上按下时触发
- touchmove - 手指移动,在元素上按下之后屏幕上任意移动
- tounchend - 手指在元素上按下之后,屏幕任意位置抬起时触发
- touchcancel - 触摸过程中被系统取消时触发 (很少使用)
touch 事件与mouse事件区别:
- touchstart:手指按下,mousedown:鼠标按下。
- touchmove:手指在屏幕上移动,mousemove:鼠标在网页上移动。
- touchend:手指抬起,mouseup:鼠标弹起。
- touch:事件只能在移动端使用,mouse :事件只能在 PC 端使用。
- touchstart: 只能在绑定元素内按下触发,touchmove、touchend可以在屏幕的任意位置执行。而 mousedown、mousemove、mouseup 都只能在绑定元素内执行。
- touchmove、touchend 只能在 touchstart 触发后,才能执行。但是 mousemove 只要鼠标在绑定元素上,不按下也能执行。
1.1、事件绑定
使用语法:
element.addEventListener( 'eventtype' , function(){} , useCapture )
eg:使用 touchstart 示例:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
.box{
width:200px;
height:200px;
border:solid 1px red;
}
</style>
</head>
<body>
<div class="box"></div>
<script>
window.onload = function(){
let oBox = document.getElementsByClassName('box')[0]
oBox.addEventListener('touchstart',function(ev){
console.log(ev)
},false)
}
</script>
</body>
</html>
每个touch事件的 event 对象,提供了手指触摸过程中的常见属性。打印函数返回的 event 对象,发现有很多参数,如图:
1.2、touchEvent 对象属性
- targetTouches - 当前元素目标上 touch 列表。
- touches - 当前屏幕上的手指触摸 touch 列表。
- changedTouches - 触发当前事件的触摸 touch 列表。
获取方法:
let oBox = document.getElementsByClassName('box')[0]
oBox.addEventListener('touchstart',function(ev){
console.log(ev.touches)
console.log(ev.targetTouches)
console.log(ev.changedTouches)
},false)
上一篇文章我们介绍过,手机如何访问电脑上本地网页,建议使用Browsersync,手机运行网页,手机触摸屏幕,在元素上触摸等观察上述三个属性打印情况。
我们发现它们都是一个数组,每个元素代表一个触摸点。每个触摸点对应的 都有一些重要的属性,分别为:
- clientX - 触摸点在可视区的 x 坐标。
- clientY - 触摸点在可视区的 y 坐标。
- pageX - 触摸点在网页上的 x 坐标。
- pageY - 触摸点在网页上的 y 坐标。
- screenX - 触摸点在屏幕中的 x 坐标。
- screenY - 触摸点在屏幕中的 y 坐标。
- identifier - 触摸点的唯一标识 id。
- target - 触摸的 DOM 节点。
二、触摸分类
很多情况下触摸事件会分为两种,单点触发和多点触发。
单点触发,指的一个指头在屏幕触摸、滑动,主要应用在下拉刷新,手机端banner滑动切换等。
注意:如果是单点触摸,但是有多个手指同时触发,此时需要求三个点的平均值作为触摸点。
多点触发:多个手指同时触摸屏幕,进行旋转、缩放、放大、拖拽等操作。
很多情况下,触摸事件跟鼠标事件会同时触发,目的是为了在pc端运行的时候,没有触摸设备可以使用鼠标代替。如果可以支持触摸事件,则把鼠标事件使用event.preventDefault()阻止事件发生,此时鼠标事件将失效。如果鼠标和触摸事件都支持时,还有添加多个触摸事件时,具体的执行顺序是怎么的?
触摸事件跟鼠标事件的触发先后顺序:
Touchstart > toucheend > mousemove > mousedown > mouseup > click
「移动端」touch事件,touchEvent对象的更多相关文章
- 移动端 js touch事件
随着智能手机和平板电脑的普及, 越来越多的人用移动设备浏览网页,我们平时在pc浏览器上用的鼠标事件,比如:click, mouseover等, 已经无法满足移动设备触摸屏的特点,触摸时代的到来,离不开 ...
- 移动端的touch事件(一)
如果我们允许用户在页面上用类似桌面浏览器鼠标手势的方式来控制WEB APP,这个页面上肯定是有很多可点击区域的,如果用户触摸到了那些可点击区域怎么办呢?? 诸如智能手机和平板电脑一类的移动设备通常会有 ...
- 浅谈移动端之touch事件--手指的滑动事件
今天台风‘海马’袭击深圳,全市停工.现分享一篇关于touch的文章,望指教! 原理: 当开始一个touchstart事件的时候,获取此刻手指的横坐标startX和纵坐标startY: 当触发touch ...
- 移动端html touch事件
诸如智能手机和平板电脑一类的移动设备通常会有一(capacitive touch-sensitivescreen),以捕捉用户的手指所做的交互.随着移动网络的发展,其能够支持越来越复杂的应用,web开 ...
- 对于移动端浏览器touch事件的研究总结(4)判断手指滑动方向
最近有一些微信的项目,虽然页面很简单,但配合手势后的效果却是很不错的.最基本的效果就是手指向上滑,页面配合css3出现一个展开效果,手指向下滑将展开的内容按原路径收起.其实就是一个简单的判断手指滑动方 ...
- 移动端之touch事件--手指的滑动事件
转自[B5教程网]:http://www.bcty365.com/content-142-5243-1.html 总结:touchmove的最后坐标减去touchstart的起始坐标.X的结果如果正数 ...
- 《移动端浏览器Touch事件判断手指滑动方向方法》
$("body").on("touchstart", function(e) { e.preventDefault(); startX = e. ...
- 移动端浏览器touch事件的研究总结
$("body").on("touchstart", function(e) { e.preventDefault(); startX = e. ...
- 「移动端」Web页面适配
一.什么是移动端适配 移动端 Web 页面,就是常说的手机 h5页面.webview页面.公众号开发的网页等. 由于手机机型较多,各个手机的屏幕尺寸不一样,所以做移动端页面,需要考虑在安卓和ios的各 ...
随机推荐
- linux学习之路第九天(磁盘分区,挂载详解)
磁盘分区,挂载 -----分区基础知识 分区的方式 1)mbr分区: 1.最多支持四个主分区 2.系统只能安装在主分区 3.扩展分区要占一个主分区 4.mbr最大只支持2TB,但拥有最好的兼容性 -- ...
- 【Azure 环境】Azure通知中心(Notification Hub)使用百度推送平台解说
问题描述 在通知中心的页面中显示支持BaiDu,介绍一下支持的是百度(Baidu)的什么吗?Azure的这个功能在国内使用的时候是否可以保证国内安卓手机的信息送达率? 问题解答 通知中心的页面中的Ba ...
- python 异常获取方法
import sys #第1:print(6/0) #直接运行该命令,出现异常,程序终止 #异常提示: '''Traceback (most recent call last): File " ...
- 给potplayer配置iptv源,看所有你想看的电视
目录 一.展示: 二.下载 三.播放 一.展示: 二.下载 Github 上的开源项目:iptv-org/iptv 传送门: https://github.com/iptv-org/iptv 该项目包 ...
- [WPF] 使用 Visual Studio App Center 持续监视应用使用情况和问题
1. 什么是AppCenter Visual Studio App Center 是几个常见移动开发和云集成服务(如持续集成.持续交付和自动 UI 测试等服务)的集合. 这些 App Center 服 ...
- SLAM的数学基础(3):几种常见的概率分布的实现及验证。
分布,在计算机学科里一般是指概率分布,是概率论的基本概念之一.分布反映的是随机或某个系统中的某个变量,它的取值的范围和规律. 常见的分布有:二项分布.泊松分布.正态分布.指数分布等,下面对它们进行一一 ...
- 禁用ipv6的两种方法
1 通过系统配置文件/etc/sysctl.conf 在sysctl.conf文件中添加行 # 禁用整个系统所有接口的IPv6 net.ipv6.conf.all.disable_ipv6 = 1 # ...
- Go LRU Cache 抛砖引玉
目录 1. LRU Cache 2. container/list.go 2.1 list 数据结构 2.2 list 使用例子 3. transport.go connLRU 4. 结尾 正文 1. ...
- PHP的图片转base64,base64图片转换为图片并保存代码
打卡记录 1. 图片转base64代码 /*图片转换为 base64格式编码*/ $img = 'images/avatar.jpg'; $base64_img = base64EncodeImage ...
- MYSQL时间戳和日期相互转换 笔记整理
相关函数: date_format(date, format) 函数,MySQL日期格式化函数date_format() unix_timestamp() 函数 str_to_date(str, fo ...