js 功能-touch 事件(绑定&触摸点) |学习笔记

简介: 快速学习 js 功能-touch 事件(绑定 &触摸点)

开发者学堂课程【移动 Web 前端开发:js 功能-touch 事件(绑定&触摸点)】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/594/detail/8414


js 功能 -touch 事件(绑定&触摸点)

 

内容介绍

一、touch 事件介绍

二、怎么使用这些事件

三、滑动效果分析

 

一、touch 事件介绍

移动端特有事件,触屏设备特有的事件, Android , iOS 设备上才有。

Touch 包含三个事件:

1、touchstart :

平时操控触屏设备的时候,经常会做滑动的操作,滑动的手势,滑动的先后顺序,先把手指放上去,再进行移动,手指移开屏幕,这样的一个过程。这个过程当中,全部都可以用 touch 事件监听到,点击某个按钮一样,在移动端做滑动,也有专门的事件监听,touchstart 的意思是,手指刚刚触摸到屏幕的时候,触发的事件  

2、touchmove :手指在屏幕上滑动的时候,会不停的触发

3、touchend :手指离开屏幕的时候,触发的事件

4、touchcancel : 被迫终止(来电)滑动,触发的事件,不需要掌握。手指离开屏幕是主动触发到的,touchcancel 是被动的,被迫终止的意思是,在滑动手机屏幕的时候,突然来电,手指被迫离开当前滑动的元素。

上面三个都是需要掌握的,

 

二、怎么使用(绑定)这些事件

绑定:

通过 on  来绑定,这样的绑定事件有一个特点,当再次绑定一个事件的时候会被覆盖掉。所以 window.onload 第二次绑定会被覆盖掉。

新建一个 HTML File 名为 05 touch 事件

--------javascript----------

< !DOCTYPE html>

<html>

<head lang="en">

<meta charset="UTF-8">

<meta name=" viewport"content= " width=device -width , user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">

<title>touch事件</title>

<style>

body{

margin: 0;

padding: 0;

}

div{

width: 200px;

height: 200px;

background: red;

}

</style>

</head>

<body>

<div> 

</div>

<script>

/*给 div 绑定 touch 事件*/

var dom = document.querySelector('div');

/* touchstart */

/* dom.attachEvent(); ie*/

/*手指刚刚触摸到屏幕的时候,触发的事件*/

dom.addEventListener('touchstart',function(){

console.log('touchstart');

});

/*手指在屏幕上滑动的时候,会不停的触发*/

dom.addEventListener('touchmove',function(){

console.log('touchmove');

});

/*手指离开屏幕的时候,触发的事件*/

dom.addEventListener('touchend',function(){

console.log('touchend');

});

</script>

</body>

</html>

'''

 

三、滑动效果分析

image.png

拖拽左右滑动的效果称之为滑动效果,拖拽怎么改变相对元素的位置,坐标,判断移动图标时候相对改变,改变所对应的元素,PC 端靠定位来移动的。

移动端的滑动效果依靠  touch 相关事件,根据触摸位置的改变,改变对应元素的位移  translate

1.怎么监听位置的改变

2.怎么获取当前的坐标

3.计算位移再设置滑动

紧紧触摸一下,touchmove 触发了,打开查看 touchstart

TouchEvent {isTrusted: true}

altKey: false

bubbles: true

cancelBubble: false

cancelable: true

changedTouches: TouchList

ctrlKey: false

currentTarget: null

defaultPrevented: false

detail:0

eventPhase: 0

isTrusted: true

isTrusted: true

metaKey: false

path: Array[5]

returnValue: true

shiftKey: false

sourceCapabilities: InputDeviceCapabilities

srcElement: div

target: div

targetTouches: TouchList

timeStamp: 1491360883100

touches: TouchList

type: "touchstart ”

view: Window

which: 0

__proto__ : TouchEvent

触摸点的集合,记录触摸点的

changedTouches :当前最新改变的触摸点集合,整个事件都会有 changedTouches 记录

targetTouches :记录当前元素上面的所有触摸点集合,touchend 没有记录

touches :记录页面上所有的触摸点集合, touchend 没有记录

/*手指在屏幕上滑动的时候 会不停的触发*/

dom. addEventListener( 'touchmove' , function(e){

console. log(e') ;

把 move 事件打印出来了

TouchEvent {isTrusted: true}

altKey: false

bubbles: true

cancelBubble: false

cancelable: true

changedTouches: TouchList

ctr1lhe/: false

currentTarget: null

defaultPrevented: false

detail:0

eventPhase:0

isTrusted: true

isTrusted: true

metaKey: false

path: Array[5]

returnValue: true

shiftKey: false

sourceCapabilities: InputDeviceCapabilities

srcElement: div

target: div

targetTouches: TouchList

timeStamp: 1491361518375

touches: TouchList

type: "touchmove"

view: Window

which:0

__proto__ : TouchEvent

/*手指离开平屏幕的时候触发的事件*/

dom. addEventListener( 'touchend' , function(e){

console.log(e);

altKey: false

bubbles: true

cancelBubble: false

cancelable: false

ChangedTouches: TouchList

ctrlKey: false

currentTarget: null

defaultPrevented: false

detail:0

eventPhase:0

isTrusted: true

isTrusted: true

metaKey: false

path: Array[5]

returnValue: true

shiftKey: false

sourceCapabilities: InputDeviceCapabilities

srcElement: div

target: div

targetTouches: TouchList

timeStamp: 1491361554634

touches: TouchList

type: "touchend"

view: Window

which:0

__proto__ : TouchEvent

目的:获取坐标

clientX 、 clientY

基于当前视口触摸点的坐标

pageX 、 pageY

基于当前页面触摸点的坐标

screenX 、 screenY

基于当前屏幕触摸点的坐标

在平常的手机端,浏览器上端有控制栏,有通知栏,浏览器下端有工具栏,可能还会有切换栏,中间部分才是网页。相对于屏幕而言,这个点可能是1.1,相对于页面而言,1.1,对屏幕而言是2.2,可能屏幕比页面大。不需要关心当前是什么坐标,因为在页面上移动的时候,从1.1移动到1.2,要判断这两个点之间的距离,跟坐标有很大的关系,这个点可能对于屏幕而言是2.2,2.3,但是两个点x轴方向上的距离是一样的,目的是用两个坐标记录两个点之间的距离。

假设这里有个目标控制元素,目标控制元素坐标距离是0和0,假如这个触摸点摸到了这个元素了,假设触摸点坐标为(1,1),移动到这里坐标变成了(1,2),改变了1个距离,根据这个1来进行位移到目标控制元素上,就形成了一个滑动的效果,这是在做轮播图之前一个准备工作,了解移动端三个特有的事件,了解如何去绑定,移动端包含哪些东西,获取坐标的目的,根据画的那个图来实现滑动效果。

目录
打赏
0
0
0
0
127
分享
相关文章
【01】对APP进行语言包功能开发-APP自动识别地区ip后分配对应的语言功能复杂吗?-成熟app项目语言包功能定制开发-前端以uniapp-基于vue.js后端以laravel基于php为例项目实战-优雅草卓伊凡
【01】对APP进行语言包功能开发-APP自动识别地区ip后分配对应的语言功能复杂吗?-成熟app项目语言包功能定制开发-前端以uniapp-基于vue.js后端以laravel基于php为例项目实战-优雅草卓伊凡
139 72
【01】对APP进行语言包功能开发-APP自动识别地区ip后分配对应的语言功能复杂吗?-成熟app项目语言包功能定制开发-前端以uniapp-基于vue.js后端以laravel基于php为例项目实战-优雅草卓伊凡
【Javascript系列】Terser除了压缩代码之外,还有优化代码的功能
Terser 是一款广泛应用于前端开发的 JavaScript 解析器和压缩工具,常被视为 Uglify-es 的替代品。它不仅能高效压缩代码体积,还能优化代码逻辑,提升可靠性。例如,在调试中发现,Terser 压缩后的代码对删除功能确认框逻辑进行了优化。常用参数包括 `compress`(启用压缩)、`mangle`(变量名混淆)和 `output`(输出配置)。更多高级用法可参考官方文档。
92 11
盘点原生JS中目前最没用的几个功能API
在JavaScript的发展历程中,许多功能与API曾风光无限,但随着技术进步和语言演化,部分功能逐渐被淘汰或被更高效的替代方案取代。例如,`with`语句使代码作用域复杂、可读性差;`void`操作符功能冗余且影响可读性;`eval`函数存在严重安全风险和性能问题;`unescape`和`escape`函数已被`decodeURIComponent`和`encodeURIComponent`取代;`arguments`对象则被ES6的剩余参数语法替代。这些变化体现了JavaScript不断优化的趋势,开发者应紧跟技术步伐,学习新技能,适应新技术环境。
60 10
盘点原生JavaScript中直接触发事件的方式
本文全面探讨了原生JavaScript中触发事件的多种方式,包括`dispatchEvent`、`Event`构造函数、`CustomEvent`构造器、直接调用事件处理器以及过时的`createEvent`和`initEvent`方法。通过技术案例分析,如模拟点击事件、派发自定义数据加载事件和实现提示框系统,帮助开发者掌握这些方法在实际开发中的应用,提升灵活性与兼容性。
72 3
【Vue.js】监听器功能(EventListener)的实际应用【合集】
而此次问题的核心就在于,Vue实例化的时机过早,在其所依赖的DOM结构尚未完整构建完成时就已启动挂载流程,从而导致无法找到对应的DOM元素,最终致使计算器功能出现异常,输出框错误地显示“{{current}}”,并且按钮的交互功能也完全丧失响应。为了让代码结构更为清晰,便于后续的维护与管理工作,我打算把HTML文件中标签内的JavaScript代码迁移到外部的JS文件里,随后在HTML文件中对其进行引用。
68 8
带方向感知功能的js图片遮罩层插件
带方向感知功能的js图片遮罩层插件
jQuery多功能滑块插件r-slider.js
r-slider.js是一款jQuery多功能滑块插件。使用该插件,可以制作出滑块、开关按钮、进度条、向导步骤等多种效果。
89 5
基于springboot+vue.js+uniapp的客户关系管理系统附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp的客户关系管理系统附带文章源码部署视频讲解等
162 2
JavaScript中的原型 保姆级文章一文搞懂
本文详细解析了JavaScript中的原型概念,从构造函数、原型对象、`__proto__`属性、`constructor`属性到原型链,层层递进地解释了JavaScript如何通过原型实现继承机制。适合初学者深入理解JS面向对象编程的核心原理。
68 1
JavaScript中的原型 保姆级文章一文搞懂
|
5月前
JS+CSS3文章内容背景黑白切换源码
JS+CSS3文章内容背景黑白切换源码是一款基于JS+CSS3制作的简单网页文章文字内容背景颜色黑白切换效果。
44 0
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等