찾다
웹 프론트엔드H5 튜토리얼HTML5 터치 이벤트 진화 탭 이벤트 소개_html5 튜토리얼 기술

터치 이벤트는 모바일 브라우저 고유의 HTML5 이벤트입니다. 클릭 이벤트는 PC 및 모바일 단말기에서 더 일반적이지만 모바일 단말기에서는 300ms 지연이 발생하며 이는 더블 클릭을 판단하는 데 영향을 미칩니다. 클릭 이벤트는 후속 작업이 발생하지 않도록 기본 대기 시간이 경과할 때까지 트리거되지 않기 때문입니다. 따라서 터치 이벤트 응답이 더 빠르고 경험이 더 좋습니다.

터치 이벤트 종류 :

터치 관련 상태 변화를 구별하기 위해 여러 유형의 터치 이벤트가 있습니다. 터치 이벤트의 <font face="NSimsun">TouchEvent.type</font> 속성을 ​​검사하여 현재 이벤트 유형이 무엇인지 확인할 수 있습니다.

참고: 많은 경우 터치 이벤트와 마우스 이벤트가 동시에 발생합니다. (목적은 터치 장치에 최적화되지 않은 코드가 터치 시에도 정상적으로 작동하도록 허용하는 것입니다. 장치). 터치 이벤트를 사용하는 경우 <font face="NSimsun">event.preventDefault()</font>을 호출하여 마우스 이벤트가 실행되는 것을 방지할 수 있습니다.

표준 터치 이벤트

이벤트 이름 설명 터치 배열 포함

터치스타트

사용자가 터치 표면에 터치 포인트를 놓으면 실행됩니다. 이벤트 <fontface>element</fontface>의 대상은 다음의 대상 <fontface>element</fontface>가 됩니다. 터치 위치 코드> 예

터치무브

事件名称 描述 包含touches数组

touchstart

当用户在触摸平面上放置了一个触点时触发。事件的目标 <font face="NSimsun">element</font> 将是触点位置上的那个目标 <font face="NSimsun">element</font>

touchmove

当用户在触摸平面上移动触点时触发。

事件的目标 <font face="NSimsun">element</font> 和这个<font face="NSimsun"> touchmove </font>事件对应的 <font face="NSimsun">touchstart 事件的目标</font> <font face="NSimsun">element</font> 相同,

哪怕当 <font face="NSimsun">touchmove</font> 事件触发时,触点已经移出了该 <font face="NSimsun">element</font> 。

touchend

当一个触点被用户从触摸平面上移除(当用户将一个手指离开触摸平面)时触发。

当触点移出触摸平面的边界时也将触发。例如用户将手指划出屏幕边缘。

已经被从触摸平面上移除的触点,可以在 changedTouches 属性定义的 TouchList 中找到。

touchenter

当触点进入某个 <font face="NSimsun">element</font> 时触发。此事件没有冒泡过程。

touchleave

当触点离开某个 <font face="NSimsun">element</font> 时触发。此事件没有冒泡过程。

touchcancel

当触点由于某些原因被中断时触发。有几种可能的原因如下(具体的原因根据不同的设备和浏览器有所不同):

  • 由于某个事件取消了触摸:例如触摸过程被一个模态的弹出框打断。
  • 触点离开了文档窗口,而进入了浏览器的界面元素、插件或者其他外部内容区域。
  • 当用户产生的触点个数超过了设备支持的个数,从而导致 <font face="NSimsun">TouchList</font> 中最早的 <font face="NSimsun">Touch</font> 对象被取消。
사용자가 터치 표면의 접점을 움직일 때 실행됩니다. 이벤트 <font face="NSimsun">element</font>의 대상은 이 <font face="NSimsun"> touchmove </font>에 해당합니다. > 이벤트 <font face="NSimsun">touchstart 이벤트</font>의 대상은 <font face="NSimsun">요소</font>와 동일합니다. 코드> , <code><fontface>touchmove</fontface> 이벤트가 발생하더라도 터치 포인트가 <fontface>요소 밖으로 이동했습니다. </fontface>. 예

터치엔드

사용자가 터치 표면에서 터치 포인트를 제거할 때(사용자가 터치 표면에서 손가락을 떼면) 실행됩니다. 또한 접촉이 터치 평면의 경계 밖으로 이동할 때도 트리거됩니다. 예를 들어, 사용자가 화면 가장자리에서 손가락을 뺍니다. 터치 플레인에서 제거된 터치는 TouchList에 정의된 changedTouches 속성에서 찾을 수 있습니다.

터치센터

연락처가 <fontface>요소</fontface>에 입력되면 트리거됩니다. 본 이벤트에는 버블링 과정이 없습니다. 예

터치리브

연락처가 <fontface>요소</fontface>를 떠날 때 시작됩니다. 본 이벤트에는 버블링 과정이 없습니다. 예

터치취소

어떤 이유로든 연락이 중단되면 실행됩니다. 다음과 같은 여러 가지 이유가 있을 수 있습니다(구체적인 이유는 기기 및 브라우저에 따라 다름).
  • 이벤트로 인해 터치가 취소되었습니다. 예를 들어 모달 팝업 상자로 인해 터치 프로세스가 중단되었습니다.
  • 터치 포인트는 문서 창을 떠나 브라우저의 인터페이스 요소, 플러그인 또는 기타 외부 콘텐츠 영역으로 들어갑니다.
  • 사용자가 생성한 터치 포인트 수가 기기에서 지원하는 수를 초과하여 <fontface>TouchList에서 가장 빠른 <code><font> code> ="NSimsun">Touch</font> 개체가 취소됩니다.

터치 개체 속성

<fontface>Touch.identifier</fontface> 터치 평면과 접촉하는 지점을 고유하게 식별하는 값을 반환합니다. 이 값은 터치 평면을 떠날 때까지 이 손가락(또는 스타일러스 등)에 의해 트리거된 모든 이벤트에서 일관되게 유지됩니다. <fontface>Touch.screenX</fontface> 화면 왼쪽 가장자리를 기준으로 한 터치 포인트의 X 좌표입니다. 읽기 전용 속성입니다. <fontface>Touch.screenY</fontface> 화면 상단 가장자리를 기준으로 한 터치 포인트의 Y 좌표입니다. 읽기 전용 속성입니다. <fontface>Touch.clientX</fontface> 표시되는 뷰포트의 왼쪽 가장자리를 기준으로 한 터치 지점의 X 좌표입니다. 읽기 전용 속성 <fontface>Touch.clientY</fontface> 표시되는 뷰포트의 상단 가장자리를 기준으로 한 터치 지점의 Y 좌표입니다. 읽기 전용 속성 <fontface>Touch.pageX</fontface> HTML 문서의 왼쪽 가장자리를 기준으로 한 터치 포인트의 X 좌표입니다. 가로 방향스크롤offset, 이 값에는 가로 스크롤 오프셋이 포함됩니다. 읽기 전용 속성. <fontface>Touch.pageY</fontface> HTML 문서의 상단 가장자리를 기준으로 한 터치 지점의 Y 좌표입니다. <fontface>가로 스크롤 오프셋이 있는 경우 이 값에는 세로 스크롤 오프셋이 포함됩니다. </fontface>. 읽기 전용 속성. <fontface>Touch.radiusX</fontface> 사용자와 터치 표면 사이의 접촉 표면을 둘러쌀 수 있는 가장 작은 타원의 가로축(X축) 반경입니다. 이 값의 단위는 <fontface>과 같습니다. screenX.</fontface>읽기 전용 속성. <code><fontface>Touch.force</fontface> 손가락이 터치 표면을 누르는 압력의 양으로, 0.0(압력 없음)부터 1.0(최대 압력)까지의 부동 소수점 숫자입니다. 읽기 전용 속성입니다. <code><fontface>Touch.radiusY</fontface> 사용자와 터치면 사이의 접촉면을 둘러쌀 수 있는 가장 작은 타원의 세로축(Y축) 반경입니다. 이 값의 단위는 <fontface>과 같습니다. screenY. </fontface>읽기 전용 속성. <code><code><fontface>Touch.target</fontface>
<font face="NSimsun">Touch.identifier</font> 返回一个可以唯一地识别和触摸平面接触的点的值. 这个值在这根手指(或触摸笔等)所引发的所有事件中保持一致, 直到它离开触摸平面.
<font face="NSimsun">Touch.screenX</font> 触点相对于屏幕左边沿的的X坐标. 只读属性.
<font face="NSimsun">Touch.screenY</font> 触点相对于屏幕上边沿的的Y坐标. 只读属性.
<font face="NSimsun">Touch.clientX</font> 触点相对于可见视区左边沿的的X坐标. 不包括任何滚动偏移. 只读属性.
<font face="NSimsun">Touch.clientY</font> 触点相对于可见视区上边沿的的Y坐标. 不包括任何滚动偏移. 只读属性.
<font face="NSimsun">Touch.pageX</font> 触点相对于HTML文档左边沿的的X坐标. 当存在水平滚动的偏移时, 这个值包含了水平滚动的偏移只读属性.
<font face="NSimsun">Touch.pageY</font> 触点相对于HTML文档上边沿的的Y坐标. <font face="NSimsun">当存在水平滚动的偏移时, 这个值包含了垂直滚动的偏移</font>只读属性.
<font face="NSimsun">Touch.radiusX</font> 能够包围用户和触摸平面的接触面的最小椭圆的水平轴(X轴)半径. 这个值的单位和<font face="NSimsun"> screenX 相同. </font>只读属性.
<code><font face="NSimsun">Touch.force</font> 手指挤压触摸平面的压力大小, 从0.0(没有压力)到1.0(最大压力)的浮点数. 只读属性.
<code><font face="NSimsun">Touch.radiusY</font> 能够包围用户和触摸平面的接触面的最小椭圆的垂直轴(Y轴)半径. 这个值的单位和<font face="NSimsun"> screenY 相同. </font>只读属性.
<code><code><font face="NSimsun">Touch.target</font>

当这个触点最开始被跟踪时(在 <font face="NSimsun">touchstart</font> 事件中), 触点位于的HTML元素. 哪怕在触点移动过程中, 触点的位置已经离开了这个元素的有效交互区域,

或者这个元素已经被从文档中移除. 需要注意的是, 如果这个元素在触摸过程中被移除, 这个事件仍然会指向它, 但是不会再冒泡这个事件到 <font face="NSimsun">window</font> 或 <font face="NSimsun">document</font> 对象.

因此, 如果有元素在触摸过程中可能被移除, 最佳实践是将触摸事件的监听器绑定到这个元素本身, 防止元素被移除后, 无法再从它的上一级元素上侦测到从该元素冒泡的事件. 只读属性.

이 터치 지점이 처음 추적되면(<font face="NSimsun">touchstart</font> 이벤트에서) 터치 지점이 HTML 요소에 위치합니다. 포인트 이동 과정에서 터치 포인트의 위치가 이 요소의 유효 상호 작용 영역을 벗어났습니다.

또는 이 요소가 문서에서 제거되었습니다. 터치 프로세스 중에 이 요소가 제거되면 이 이벤트는 여전히 해당 요소를 가리키지만 이 이벤트는 더 이상 또는 <font face="NSimsun">문서</font> 개체.

따라서 터치 프로세스 중에 제거될 수 있는 요소가 있는 경우 가장 좋은 방법은 터치 이벤트 리스너를 요소 자체에 바인딩하여 해당 요소가 부모 요소에서 제거되는 것을 방지하는 것입니다. 읽기 전용 속성입니다.

IE指针事件
事件名称 描述(在触摸设备上)
MSPointerDown 触摸开始
MSPointerMove 接触点移动
MSPointerUp 触摸结束
MSPointerOver 触摸点移动到元素内,相当于mouseover
MSPointerOut 触摸点离开元素,相当于mouseout
IE10의 터치 이벤트

MSPointerEvent 속성

属性 描述
hwTimestamp 创建事件的时间(ms)
isPrimary 标识该指针是不是主指针
pointerId 指针的唯一ID(类似于触摸事件的标识符)
pointerType 一个整数,标识了该事件来自鼠标、手写笔还是手指
pressure 笔的压力,0-255,只有手写笔输入时才可用
rotation 0-359的整数,光标的旋转度(如果支持的话)
tiltX/tiltY 手写笔的倾斜度,只有用手写笔输入时才支持

동등한 이벤트

鼠标 触摸 键盘
mousedown touchstart keydown
mousemove touchmove keydown
mouseup touchend keyup
mouseover   focus

분명히 터치 작업 순서: touchstart-touchmove-touchend와 마우스 순서: mousedown-mousemove-mouseup 및 키보드 순서: keydown-keypress-keyup은 세 가지 상호 작용 패턴이 모두 매우 유사하므로 이는 우연이 아닙니다. 시작-이동-정지로 설명할 수 있습니다.

그런데 클릭은 300ms의 지연을 두고 터치시작-터치이동-터치엔드 과정을 거쳐야 하므로 탭 이벤트가 필요한 것은 짧은 시간 동안 같은 지점을 터치한다는 의미입니다.

캡슐화된 탭 및 롱탭 이벤트

XML/HTML 코드클립보드에 콘텐츠 복사
  1. (function() {    
  2.     var TOUCHSTART, TOUCHEND;    
  3.     if (typeof(window.ontouchstart) != '정의되지 않음') {    
  4.         터치시작 = '터치시작';    
  5.         터치END = '터치엔드';    
  6.         터치MOVE='터치이동';    
  7.      
  8.     } else if (typeof(window.onmspointerdown) != '정의되지 않음') {    
  9.         터치시작 = 'MSPointerDown';    
  10.         터치 = 'MSPointerUp';    
  11.         터치MOVE='MSPointerMove';    
  12.     } 그밖에 {    
  13.         터치시작 = '마우스다운';    
  14.         터치 = '마우스업';    
  15.         터치이동 = '마우스이동';    
  16.     }    
  17.     기능 NodeTouch(노드) {    
  18.         this._node = node;    
  19.     }    
  20.     함수 탭(노드,콜백,범위) {    
  21.         node.addEventListener(TOUCHSTART, function(e) {    
  22.             x = e.touches[0].pageX;    
  23.             y = e.touches[0].pageY;    
  24.         });    
  25.         node.addEventListener(TOUCHEND, function(e) {    
  26.             e.stopPropagation();    
  27.             e.preventDefault();    
  28.             var curx = e.changedTouches[0].pageX;    
  29.             var cury = e.changedTouches[0].pageY;    
  30.            if (Math.abs(curx - x)  6 && Math.abs(cury - y)  6) {    
  31.                 callback.apply(범위, 인수);    
  32.             }    
  33.         });    
  34.     }    
  35.     기능 longTap(노드,콜백,범위) {    
  36.         var x,y,startTime=0,endTime=0,in_dis=false;    
  37.         node.addEventListener(TOUCHSTART, function(e) {    
  38.             x = e.touches[0].pageX;    
  39.             y = e.touches[0].pageY;    
  40.             startTime=(new Date()).getTime();    
  41.         });    
  42.         node.addEventListener(TOUCHEND, function(e) {    
  43.             e.stopPropagation();    
  44.             e.preventDefault();    
  45.             var curx = e.changedTouches[0].pageX;    
  46.             var cury = e.changedTouches[0].pageY;    
  47.            if (Math.abs(curx - x)  6 && Math.abs(cury - y)  6) {    
  48.                in_dis=true;    
  49.             }그밖에{    
  50.                in_dis=false;    
  51.             }    
  52.             endTime=(new Date()).getTime();    
  53.             if (endTime - startTime > 300 && in_dis) {    
  54.                 callback.apply(범위, 인수);    
  55.             }    
  56.         });    
  57.     }    
  58.     NodeTouch.prototype.on = 함수(evt, 콜백, 범위) {    
  59.         var scopeObj;    
  60.         var x,y;    
  61.         if (!scope) {    
  62.             scopeObj = ._node;    
  63.         } 그밖에 {    
  64.             scopescopeObj = scope;    
  65.         }    
  66.         if (이벤트 === '탭') {    
  67.             tap(this._node,callback,scope);    
  68.         } else if(이벤트 === '길게 탭'){    
  69.             longTap(this._node,callback,scope);    
  70.         } 그밖에 {    
  71.             this._node.addEventListener(evt, function() {    
  72.                 callback.apply(범위, 인수);    
  73.             });    
  74.         }    
  75.         이것을 반환하세요.    
  76.     }    
  77.     window.$ = 함수(선택기) {    
  78.         var 노드 = 문서.querySelector(선택기);    
  79.         if (노드) {    
  80.             새 NodeTouch(노드) 반환;    
  81.         } 그밖에 {    
  82.             null을 반환합니다.    
  83.         }    
  84.     }    
  85. })();    
  86. var box=$("#box");    
  87. box.on("longtap",function(){    
  88.     console.log("你已经长按了");    
  89. },상자)  
원문지址:

http://www.cnblogs.com/hutuzhu/archive/2016/03/25/5315638.html

성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
html5的div一行可以放两个吗html5的div一行可以放两个吗Apr 25, 2022 pm 05:32 PM

html5的div元素默认一行不可以放两个。div是一个块级元素,一个元素会独占一行,两个div默认无法在同一行显示;但可以通过给div元素添加“display:inline;”样式,将其转为行内元素,就可以实现多个div在同一行显示了。

html5中列表和表格的区别是什么html5中列表和表格的区别是什么Apr 28, 2022 pm 01:58 PM

html5中列表和表格的区别:1、表格主要是用于显示数据的,而列表主要是用于给数据进行布局;2、表格是使用table标签配合tr、td、th等标签进行定义的,列表是利用li标签配合ol、ul等标签进行定义的。

html5怎么让头和尾固定不动html5怎么让头和尾固定不动Apr 25, 2022 pm 02:30 PM

固定方法:1、使用header标签定义文档头部内容,并添加“position:fixed;top:0;”样式让其固定不动;2、使用footer标签定义尾部内容,并添加“position: fixed;bottom: 0;”样式让其固定不动。

html5中不支持的标签有哪些html5中不支持的标签有哪些Mar 17, 2022 pm 05:43 PM

html5中不支持的标签有:1、acronym,用于定义首字母缩写,可用abbr替代;2、basefont,可利用css样式替代;3、applet,可用object替代;4、dir,定义目录列表,可用ul替代;5、big,定义大号文本等等。

HTML5中画布标签是什么HTML5中画布标签是什么May 18, 2022 pm 04:55 PM

HTML5中画布标签是“<canvas>”。canvas标签用于图形的绘制,它只是一个矩形的图形容器,绘制图形必须通过脚本(通常是JavaScript)来完成;开发者可利用多种js方法来在canvas中绘制路径、盒、圆、字符以及添加图像等。

html5废弃了哪个列表标签html5废弃了哪个列表标签Jun 01, 2022 pm 06:32 PM

html5废弃了dir列表标签。dir标签被用来定义目录列表,一般和li标签配合使用,在dir标签对中通过li标签来设置列表项,语法“<dir><li>列表项值</li>...</dir>”。HTML5已经不支持dir,可使用ul标签取代。

Html5怎么取消td边框Html5怎么取消td边框May 18, 2022 pm 06:57 PM

3种取消方法:1、给td元素添加“border:none”无边框样式即可,语法“td{border:none}”。2、给td元素添加“border:0”样式,语法“td{border:0;}”,将td边框的宽度设置为0即可。3、给td元素添加“border:transparent”样式,语法“td{border:transparent;}”,将td边框的颜色设置为透明即可。

html5为什么只需要写doctypehtml5为什么只需要写doctypeJun 07, 2022 pm 05:15 PM

因为html5不基于SGML(标准通用置标语言),不需要对DTD进行引用,但是需要doctype来规范浏览器的行为,也即按照正常的方式来运行,因此html5只需要写doctype即可。“!DOCTYPE”是一种标准通用标记语言的文档类型声明,用于告诉浏览器编写页面所用的标记的版本。

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

Atom Editor Mac 버전 다운로드

Atom Editor Mac 버전 다운로드

가장 인기 있는 오픈 소스 편집기

Dreamweaver Mac版

Dreamweaver Mac版

시각적 웹 개발 도구

안전한 시험 브라우저

안전한 시험 브라우저

안전한 시험 브라우저는 온라인 시험을 안전하게 치르기 위한 보안 브라우저 환경입니다. 이 소프트웨어는 모든 컴퓨터를 안전한 워크스테이션으로 바꿔줍니다. 이는 모든 유틸리티에 대한 액세스를 제어하고 학생들이 승인되지 않은 리소스를 사용하는 것을 방지합니다.

DVWA

DVWA

DVWA(Damn Vulnerable Web App)는 매우 취약한 PHP/MySQL 웹 애플리케이션입니다. 주요 목표는 보안 전문가가 법적 환경에서 자신의 기술과 도구를 테스트하고, 웹 개발자가 웹 응용 프로그램 보안 프로세스를 더 잘 이해할 수 있도록 돕고, 교사/학생이 교실 환경 웹 응용 프로그램에서 가르치고 배울 수 있도록 돕는 것입니다. 보안. DVWA의 목표는 다양한 난이도의 간단하고 간단한 인터페이스를 통해 가장 일반적인 웹 취약점 중 일부를 연습하는 것입니다. 이 소프트웨어는

mPDF

mPDF

mPDF는 UTF-8로 인코딩된 HTML에서 PDF 파일을 생성할 수 있는 PHP 라이브러리입니다. 원저자인 Ian Back은 자신의 웹 사이트에서 "즉시" PDF 파일을 출력하고 다양한 언어를 처리하기 위해 mPDF를 작성했습니다. HTML2FPDF와 같은 원본 스크립트보다 유니코드 글꼴을 사용할 때 속도가 느리고 더 큰 파일을 생성하지만 CSS 스타일 등을 지원하고 많은 개선 사항이 있습니다. RTL(아랍어, 히브리어), CJK(중국어, 일본어, 한국어)를 포함한 거의 모든 언어를 지원합니다. 중첩된 블록 수준 요소(예: P, DIV)를 지원합니다.