検索
ホームページウェブフロントエンドH5 チュートリアルHTML5 タッチイベントの進化 タップイベントの紹介_html5 チュートリアル スキル

タッチ イベントはモバイル ブラウザーに特有の HTML5 イベントです。クリック イベントは PC やモバイル端末でよく使用されますが、モバイル端末では 300 ミリ秒の遅延が発生します。この 300 ミリ秒の遅延は、ダブル クリックを判断するために発生します。クリック イベントのみが、後続のアクションが発生しないようにデフォルトの待機時間が経過するまでトリガーされないため、長押しします。そのため、タッチ イベントの応答が速くなり、エクスペリエンスが向上します。

タッチイベントの種類:

タッチに関連した状態変化を区別するために、複数の種類のタッチイベントが存在します。現在のイベントのタイプは、タッチ イベントの <font face="NSimsun">TouchEvent.type</font> 属性を調べることで判断できます。

注: 多くの場合、タッチ イベントとマウス イベントは同時にトリガーされます (目的は、タッチ デバイス用に最適化されていないコードでもタッチ デバイスで正常に動作できるようにすることです)デバイス)。タッチ イベントを使用する場合は、<font face="NSimsun">event.preventDefault()</font> を呼び出して、マウス イベントがトリガーされるのを防ぐことができます。

標準タッチイベント

テーブル>

オブジェクトのプロパティをタッチします

イベント名 説明 タッチ配列が含まれます

タッチスタート

ユーザーがタッチ サーフェス上にタッチ ポイントを置いたときに発生します。イベント <font face="NSimsun">要素</font> のターゲットは、次のターゲット <font face="NSimsun">要素</font> になります。タッチ位置コード> はい

タッチムーブ

事件名称 描述 包含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">要素</font>のターゲットは、この <font face="NSimsun"> touchmove </font> に対応します。 > イベント <font face="NSimsun">touchstart イベント</font> のターゲットは <font face="NSimsun">要素</font> と同じです。コード>、 <font face="NSimsun">touchmove</font> イベントがトリガーされても、タッチ ポイントが <font face="NSimsun">要素の外に移動しています。 </font>
はい

タッチエンド

ユーザーによってタッチ ポイントがタッチ表面から離れたとき (ユーザーがタッチ表面から指を離したとき) に発生します。 接触がタッチ面の境界外に移動したときにもトリガーされます。たとえば、ユーザーが画面の端から指を抜きます。 タッチ プレーンから削除されたタッチは、TouchList で定義されている changedTouches 属性で確認できます。 はい

タッチエンター

連絡先が <font face="NSimsun">要素</font>に入るときにトリガーされます。 このイベントにはバブリング処理はありません。 はい

タッチリーブ

連絡先が <font face="NSimsun">要素</font>を離れるときに発生します。 このイベントにはバブリング処理はありません。 はい

タッチキャンセル

何らかの理由で連絡が中断されたときに発生します。次のようないくつかの理由が考えられます (具体的な理由はデバイスやブラウザによって異なります):
  • イベントによりタッチがキャンセルされました。たとえば、モーダル ポップアップ ボックスによってタッチ プロセスが中断されました。
  • タッチ ポイントがドキュメント ウィンドウから出て、ブラウザのインターフェイス要素、プラグイン、またはその他の外部コンテンツ領域に入ります。
  • ユーザーが生成したタッチ ポイントの数がデバイスでサポートされている数を超えた場合、<font face="NSimsun">TouchList</font> code> ="NSimsun">タッチ オブジェクトがキャンセルされます。
はい
。 が含まれます。 。 テーブル>

<font face="NSimsun">Touch.identifier</font> タッチ面と接触している点を一意に識別する値を返します。この値は、この指 (またはスタイラスなど) がタッチ面を離れるまでトリガーされるすべてのイベントにわたって一貫しています。
<font face="NSimsun">Touch.screenX</font> 画面の左端を基準としたタッチ ポイントの X 座標。読み取り専用プロパティ。
<font face="NSimsun">タッチスクリーン Y</font> 画面の上端を基準としたタッチ ポイントの Y 座標。読み取り専用プロパティ。
<font face="NSimsun">Touch.clientX</font> 表示されているビューポートの左端を基準としたタッチ ポイントの X 座標には、読み取り専用のプロパティが含まれません。
<font face="NSimsun">Touch.clientY</font> 表示されているビューポートの上端を基準としたタッチ ポイントの Y 座標には、読み取り専用のプロパティが含まれません。
<font face="NSimsun">Touch.pageX</font> HTML ドキュメントの左端を基準としたタッチ ポイントの X 座標。水平スクロールがある場合offset、この値には水平スクロール オフセット読み取り専用プロパティ
<font face="NSimsun">Touch.pageY</font> HTML ドキュメントの上端を基準としたタッチ ポイントの Y 座標。<font face="NSimsun">水平スクロール オフセットがある場合、この値には垂直スクロール オフセットが含まれます。</font> 。<strong>読み取り専用属性。</strong>
<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">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 は、3 つの対話パターンすべてが非常に似ているため、これは偶然ではありません。 start-move-stop で記述できます。

そうは言っても、クリックは 300 ミリ秒の遅延を伴う touchstart-touchmove-touchend プロセスを通過する必要があるため、タップとは同じポイントを短時間タッチすることを意味します。

カプセル化されたタップイベントとロングタップイベント

XML/HTML コードコンテンツをクリップボードにコピー
  1. (function() {
  2. var タッチスタート、タッチエンド;    
  3. if (typeof(window.ontouchstart) != '未定義') {
  4. タッチスタート = 'タッチスタート';    
  5. タッチエンド = 'タッチエンド';    
  6. TOUCHMOVE='タッチムーブ';    
  7. } else if (typeof(window.onmspointerdown) != '未定義') {
  8. TOUCHSTART = 'MSPointerDown';    
  9. タッチエンド = 'MSPointerUp';    
  10. TOUCHMOVE='MSPointerMove';    
  11. } else {
  12. タッチスタート = 'マウスダウン';    
  13. タッチエンド = 'マウスアップ';    
  14. TOUCHMOVE = 'mousemove';    
  15. }
  16. 関数 NodeTouch(ノード) {
  17. this._node = ノード;    
  18. }
  19. function tap(node,callback,scope) {
  20. node.addEventListener(TOUCHSTART, function(e) {
  21. x = e.touches[0].pageX;    
  22. y = e.touches[0].pageY;    
  23. });    
  24. node.addEventListener(TOUCHEND, function(e) {
  25. e.stopPropagation();    
  26. e.preventDefault();    
  27. var curx = e.changedTouches[0].pageX;    
  28. var cury = e.changedTouches[0].pageY;    
  29. if (Math.abs(curx - x) 6 && Math.abs(cury - y) 6) {
  30. callback.apply(scope, arguments);    
  31. }
  32. });    
  33. }
  34. 関数 longTap(node,callback,scope) {
  35. var x,y,startTime=0,endTime=0,in_dis=false;    
  36. node.addEventListener(TOUCHSTART, function(e) {
  37. x = e.touches[0].pageX;    
  38. y = e.touches[0].pageY;    
  39. startTime=(new Date()).getTime();    
  40. });    
  41. node.addEventListener(TOUCHEND, function(e) {
  42. e.stopPropagation();    
  43. e.preventDefault();    
  44. var curx = e.changedTouches[0].pageX;    
  45. var cury = e.changedTouches[0].pageY;    
  46. if (Math.abs(curx - x) 6 && Math.abs(cury - y) 6) {
  47. in_dis=true;    
  48. }その他{
  49. in_dis=false;    
  50. }
  51. endTime=(new Date()).getTime();    
  52. if (endTime - startTime > 300 && in_dis) {
  53. callback.apply(scope, arguments);    
  54. }
  55. });    
  56. }
  57. NodeTouch.prototype.on = function(evt, callback, scope) {
  58. var scopeObj;    
  59. var x,y;    
  60. if (!scope) {
  61. scopeObj = this._node;    
  62. } else {
  63. スコープscopeObj = スコープ;    
  64. }
  65. if (evt === 'タップ') {
  66. tap(this._node,callback,scope);    
  67. } else if(evt === 'ロングタップ'){
  68. longTap(this._node,callback,scope);    
  69. } else {
  70. this._node.addEventListener(evt, function() {
  71. callback.apply(scope, arguments);    
  72. });    
  73. }
  74. これを返します。    
  75. }
  76. window.$ = 関数(セレクター) {
  77. var node = document.querySelector(selector);    
  78. if (ノード) {
  79. return new NodeTouch(ノード);    
  80. } else {
  81. null を返します。    
  82. }
  83. }
  84. })();    
  85. var box=$("#box");    
  86. box.on("longtap",function(){
  87. console.log("你已经长按了");    
  88. }、ボックス)

このセクション以上の HTML5 タッチ イベントの実行タップ イベント メディアは、大家のすべてのコンテンツを小分けに共有することを希望し、大家一参照、また大家多数の脚本のサポートを希望します。

翻訳地址:

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ヘンタイを無料で生成します。

ホットツール

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター

Dreamweaver Mac版

Dreamweaver Mac版

ビジュアル Web 開発ツール

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。

DVWA

DVWA

Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

mPDF

mPDF

mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。