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样式的引入方式 在网页中,CSS样式一般通过以下三种方式进行引入: 1. 内联样式 内联样式就是将CSS样式直接写在HTML标签中的style属性里。 示例代码: <p style="color: red; font-size: 20px;">这段文字将会以红色和20p…

    css 2023年6月10日
    00
  • newasp中main类

    下面是详细的讲解“newasp中main类”的攻略。 什么是 newasp 中的 main 类? main 类是 newasp 框架中的一个核心类。当我们在 newasp 框架中编写一个应用程序时,会去定义一个 main 类,并在该类中实现一个名为 main 的方法。这个方法是应用程序的入口,框架会直接调用该方法。 在该方法内部,我们可以编写应用程序的业务逻…

    css 2023年6月10日
    00
  • CSS中overflow:scroll怎么设置只上下滚动而不左右滚动

    要设置只上下滚动而不左右滚动,可以采用以下方法: 设置容器宽度和高度 首先,需要设置容器的宽度和高度,这样可以限制内容的大小,然后使用overflow属性设置滚动,代码如下: .container { width: 300px; /* 容器宽度 */ height: 200px; /* 容器高度 */ overflow-y: scroll; /* 上下滚动 …

    css 2023年6月10日
    00
  • 如何使用python docx模块操作word文档

    使用Python的docx模块可以方便地操作Word文档,下面将详细讲解操作步骤: 安装docx模块 首先需要安装docx模块,可以使用pip命令进行安装,命令如下: pip install python-docx 打开Word文档 使用docx模块可以通过以下步骤打开Word文档: import docx # 打开Word文档 doc = docx.Doc…

    css 2023年6月10日
    00
  • ZeroClipboard插件实现多浏览器复制功能(支持firefox、chrome、ie6)

    一、ZeroClipboard插件介绍 ZeroClipboard是一个开源的javascript库,用于实现将文本复制到用户的剪贴板中。它支持多种浏览器,包括chrome、firefox、safari、IE6等。在ZeroClipboard之前,要想将文本复制到剪贴板中需要使用ActiveX等非标准技术,很难实现跨浏览器的兼容。通过ZeroClipboar…

    css 2023年6月10日
    00
  • 浅谈JS获取元素的N种方法及其动静态讨论

    文章标题:浅谈JS获取元素的N种方法及其动静态讨论 概述 获取元素是前端开发中最常用的操作之一,也是JS语言的一项基本技能。本文将介绍JS获取元素的N种方法及其动、静态讨论。 静态获取元素 1. getElementById 使用document.getElementById(id)方法可以通过id直接获取元素。 <div id="myDiv…

    css 2023年6月10日
    00
  • 通过设置CSS中的position属性来固定层的位置

    通过设置CSS中的position属性来固定层的位置,一般常用的属性是position:fixed和position:absolute。其中,position:fixed是相对于浏览器窗口而言的固定定位,而position:absolute是相对于最近的带有定位属性(position不为static)的父级元素进行定位的,如果不存在父级元素,则是相对于bod…

    css 2023年6月9日
    00
  • 15个客户希望设计师掌握的设计技能

    以下是“15个客户希望设计师掌握的设计技能”的完整攻略: 15个客户希望设计师掌握的设计技能攻略 设计是一门非常重要的艺术,而设计师则需要不断学习和提升自己的设计技能,以满足客户的需求。下面列举了15个客户希望设计师掌握的设计技能,详细讲解每个技能的要点和应用示例: 1. 设计原则 设计师需要掌握设计原则,包括对比、重复、对齐、层次等,这些原则可以帮助设计师…

    css 2023年6月10日
    00
合作推广
合作推广
分享本页
返回顶部