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

yizhihongxing

针对“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禁用input、checkbox、select等html控件实现disable效果

    使用CSS禁用<input>、<checkbox>、<select>等HTML控件是一种简单而有效的方法,可以使用户无法交互。下面是实现disable效果的完整攻略: 1. 理解CSS的disabled属性 CSS中有一个disabled属性,可以将一个表单元素设置为“禁用”。这个属性是一个布尔值,通过设置它为true或者…

    css 2023年6月10日
    00
  • flex4.5中CSS选择器的应用小结

    关于“flex4.5中CSS选择器的应用小结”这个主题,下面是我的详细讲解攻略: 一、选择器的基本概念 CSS选择器是一种用来选择页面中某些元素的表达式。选择器可以根据元素的标签名、类名、ID等属性进行选择,更改元素的样式。 常见的CSS选择器有以下几种: 标签选择器:通过元素标签名来选择元素。 类选择器:通过元素的class属性值来选择元素。 ID选择器:…

    css 2023年6月9日
    00
  • 浅谈inline-block及解决空白间距

    当使用CSS布局时,我们经常使用display属性来控制元素的布局。其中一个display属性值是inline-block。那么什么是inline-block呢?在本篇攻略中,我们将探讨这个属性,并回答解决这个属性可能引发的空白间距问题的方法。 什么是inline-block? inline-block是CSS中的一个布局属性,它的作用是将元素设置为内联块级…

    css 2023年6月9日
    00
  • HTML和CSS的关键:盒子模型(Box model)

    HTML和CSS是网页制作基础技能,而盒子模型(Box model)是学习和使用这两种技术的关键。盒子模型是指网页中每一个元素都可以看做是一个长方形的盒子,该盒子包含了元素的内容、内边距(padding)、边框(border)和外边距(margin)。 盒子模型结构 盒子模型可以分为以下四个部分: 内容(Content):元素的真正内容,比如文本、图片; 内…

    css 2023年6月10日
    00
  • DIV+CSS实现电台列表设计的示例代码

    下面是详细讲解“DIV+CSS实现电台列表设计的示例代码”的完整攻略: 一、实现思路 首先,我们需要在HTML文件中定义一个列表元素,用<ul>标签包裹多个<li>标签,每个<li>标签代表一条电台信息。然后,使用CSS样式来设置每个<li>标签的位置、大小、背景色、文字颜色等细节。在设置样式时,我们可以利用d…

    css 2023年6月10日
    00
  • 全面了解行内元素与块级元素的区别

    全面了解行内元素与块级元素的区别 一、概念解释 在 HTML 中,元素分为两种类型:块级元素和行内元素。块级元素会在页面中生成一个独立的区域,而行内元素则是一个可内嵌于块级元素中的元素。通俗点说,块级元素就像是盒子,而行内元素就像放在盒子里的小东西。 二、区别 1. 渲染方式不同 块级元素会在页面中单独占一行,相邻的块级元素之间会有间隔。例如: <di…

    css 2023年6月9日
    00
  • CSS 使用 resize 实现图片拖拽切换预览功能(强大功能)

    关于“CSS 使用 resize 实现图片拖拽切换预览功能”的完整攻略,可以分为以下4步进行讲解: 1. HTML 结构准备 首先需要准备HTML结构,包括两个容器,一个用于显示图片的容器,另一个用于显示预览的容器。代码示例如下: <div class="image-container"> <img src="…

    css 2023年6月10日
    00
  • 从一次项目重构说起CSS3自定义变量在项目的使用方法

    从一次项目重构说起CSS3自定义变量在项目的使用方法 在前端开发中,CSS3自定义变量是一种非常实用的技术,它可以帮助开发者更加方便地管理和调整样式。本攻略将从一次项目重构的实践出发,详细讲解CSS3自定义变量在项目中的使用方法,并提供两个示例说明。 1. 项目重构背景 在一次项目重构中,我们发现原有的CSS样式表存在以下问题: 样式表过于庞大,难以维护和调…

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