html5构建触屏网站之touch事件介绍

针对“html5构建触屏网站之touch事件介绍”的完整攻略,我将从以下几个方面进行详细讲解:

  1. Touch事件介绍
  2. Touch事件类型
  3. Touch事件属性
  4. 示例说明

1. Touch事件介绍

在html5中,为了支持触屏设备,引入了Touch事件。 Touch事件是一种与鼠标和键盘事件相对应的一种输入方式,用于描述在触摸屏上手势的各种行为,例如单指单击、双指缩放等。

2. Touch事件类型

Touch事件包括以下几种类型:

  • touchstart: 当手指触摸时触发;
  • touchmove: 当手指在屏幕上滑动时连续触发;
  • touchend: 当手指离开屏幕时触发;
  • touchcancel: 系统取消touch事件的触发;

3. Touch事件属性

在Touch事件中,我们可以通过event对象获取到以下几种属性值:

  • touches:其为一个数组对象,包含当前屏幕上所有与当前事件相关手指的信息。
  • targetTouches:也为一个数组对象,包含当前事件在DOM结构中与当前目标元素相关的手指的信息。
  • changedTouches:其为一个数组对象,包含当前事件涉及到的手指的信息,即新增的手指则存放在这个数组中。

需要注意的是,在不加以处理的情况下,Touches, targetTouches, changedTouches 数组将会保留不变,因此,在处理Touch事件时,需要留意数组状态。

4. 示例说明

下面,我们通过两个示例说明Touch事件的使用:

示例1:实现一个滑动条

HTML代码:

<div id="slider"></div>

JavaScript代码:

var slider = document.getElementById("slider");

slider.addEventListener("touchstart", function(e) {
  var touch = e.changedTouches[0];
  var posX = touch.clientX - slider.offsetLeft;

  slider.addEventListener("touchmove", function(e) {
    e.preventDefault();

    var touch = e.changedTouches[0];
    var x = touch.clientX - posX;

    if (x >= 0 && x <= slider.parentNode.clientWidth - slider.offsetWidth) {
      slider.style.left = x + "px";
    }
  }, false);

  slider.addEventListener("touchend", function(e) {
    slider.removeEventListener("touchmove", arguments.callee, false);
  }, false);
}, false);

说明:

上述代码中,我们实现了一个具有Move事件的滑动条,当我们触碰屏幕后,开始滑动时,根据Touch事件更新slider的位置,当我们离开屏幕后,Move事件停止,滑动条停止滑动。

示例2:实现双指缩放

HTML代码:

<div id="image-container">
   <img src="img.jpg" alt="Image"/>
</div>

JavaScript代码:

var scale = 1;
var imageContainer = document.getElementById("image-container");

imageContainer.addEventListener("touchstart", function(e) {
  if (e.touches.length == 2) {
    var x1 = e.touches[0].clientX;
    var x2 = e.touches[1].clientX;
    var y1 = e.touches[0].clientY;
    var y2 = e.touches[1].clientY;

    var distance = Math.sqrt(Math.pow(x1-x2,2) + Math.pow(y1-y2,2));
    scale = distance / imageContainer.offsetWidth;
  }

}, false);

imageContainer.addEventListener("touchmove", function(e) {
  if (e.touches.length == 2) {
    var x1 = e.touches[0].clientX;
    var x2 = e.touches[1].clientX;
    var y1 = e.touches[0].clientY;
    var y2 = e.touches[1].clientY;

    var distance = Math.sqrt(Math.pow(x1-x2,2) + Math.pow(y1-y2,2));
    imageContainer.style.transform = "scale(" + (distance / (scale * imageContainer.offsetWidth)) + ")";
  }
});

imageContainer.addEventListener("touchend", function() {
  scale = 1;
  imageContainer.style.transform = "scale(" + scale + ")";
});

说明:

上述代码中,我们实现了一个双指缩放图片的效果,当我们触碰屏幕后,手指数为2时,根据Touch事件计算出当前双指的距离,用于后续计算缩放比例;当我们移动双指时,根据Touch事件计算实时的距离,并更新图片的缩放比例,当我们双指离开屏幕时,复位图片的缩放比例。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:html5构建触屏网站之touch事件介绍 - Python技术站

(0)
上一篇 2023年6月10日
下一篇 2023年6月10日

相关文章

  • CSS样式表与格式布局详解

    CSS样式表与格式布局详解 CSS(Cascading Style Sheets)是一种用于控制网页样式和布局的语言。本攻略将详细讲解CSS样式表的基本语法、选择器、盒模型、格式布局、浮动、定位、响应式设计等内容。 CSS样式表的基本语法 CSS样式表由选择器和声明块组成。选择器用于选择应用样式的HTML元素,声明块由一组属性和值组成,用于定义元素的样式。例…

    css 2023年5月18日
    00
  • CSS实现带箭头的DIV(鼠标放上显示提示框)

    下面是CSS实现带箭头的DIV的完整攻略: 1. CSS绘制箭头 首先我们需要用CSS来绘制箭头,这里提供两种方法: 方法一:利用伪元素和边框实现 通过给DIV添加四个边框和一个伪元素,同时利用边框的特性,通过指定某一边的边框为透明,其他边框不透明,来绘制出箭头的效果。 示例代码如下: .arrow { position: relative; padding…

    css 2023年6月10日
    00
  • 举例讲解CSS的子元素选择器用法

    下面是讲解“举例讲解CSS的子元素选择器用法”的完整攻略: 什么是CSS的子元素选择器? CSS的子元素选择器可以让你选择元素树结构中的子元素。它可以帮助你精确地选择某个元素的直接子元素,而不选择该元素下的所有后代元素。 子元素选择器的语法 要使用CSS的子元素选择器,需使用“>”符号。以下是子元素选择器的语法: 父元素 > 子元素 { 属性: …

    css 2023年6月9日
    00
  • CSS圆形旋转效果 纯CSS制作圆形旋转菜单效果(七步完成)

    下面我来详细讲解一下“CSS圆形旋转效果 纯CSS制作圆形旋转菜单效果(七步完成)”的完整攻略。 1. 确定HTML结构 首先,我们需要确定圆形旋转菜单的HTML结构。一般情况下,我们可以使用<ul>和<li>标签来实现。具体代码如下: <ul class="menu"> <li><a…

    css 2023年6月9日
    00
  • Vue.js实现网格列表布局转换方法

    Vue.js是一种流行的JavaScript框架,主要用于构建交互式响应式Web应用程序,它提供了丰富的工具和插件来简化项目的开发。本篇文章将详细讲解如何使用Vue.js实现网格列表布局的转换方法。 实现原理 网格列表布局是将一个网格布局转换为列表布局的过程,即将原先按照固定网格分布的样式,转换为逐行排列的样式,便于移动端和小屏幕设备的展示。实现的基本步骤如…

    css 2023年6月9日
    00
  • js cavans实现静态滚动弹幕

    1. 简介 Cavans 是 HTML5 新增的元素,它可以让开发者在浏览器上绘制图形、动画等。本篇攻略讲解如何使用 Canvas 实现静态的滚动弹幕。 2. 准备工作 为了使用 Canvas 实现滚动弹幕,需要先在 HTML 中添加一个 Canvas 元素。以下是添加 Canvas 元素的示例代码: <canvas id="myCanvas…

    css 2023年6月11日
    00
  • KindEditor 4.x 在线编辑器常用方法小结

    KindEditor 4.x 在线编辑器常用方法小结 KindEditor是一款功能强大的基于Web的富文本编辑器,可以方便地实现各种富文本编辑功能,广泛应用于日常的表单编辑和网页建设等领域。本文主要介绍KindEditor 4.x在线编辑器的常用方法,包括文本编辑、图像处理、文件上传等常用功能,同时提供示例说明。 一、文本编辑 在KindEditor中,文…

    css 2023年6月9日
    00
  • JavaScript for of

    JavaScript的for of循环是ES6中的一个新特性,它可以用于遍历可迭代对象(Iterable)。本文将详细介绍for of循环的使用方法,以及提供代码示例。 for of循环的基本语法如下: for (let item of iterable) { // Statement } 其中,iterable表示一个可迭代对象,如字符串、数组、Set、M…

    Web开发基础 2023年3月30日
    00
合作推广
合作推广
分享本页
返回顶部