• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com专业计算机教程网站
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • html/xhtml
  • html5
  • CSS
  • XML/XSLT
  • Dreamweaver教程
  • Frontpage教程
  • 心得技巧
  • bootstrap
  • vue
  • AngularJS
  • HBuilder教程
  • css3
  • 浏览器兼容
  • div/css
  • 网页编辑器
  • axure
您的位置:首页 > 网页设计 >html5 > H5之12__触摸与单击:基本的事件处理

H5之12__触摸与单击:基本的事件处理

作者:匿名 字体:[增加 减小] 来源:互联网 时间:2018-12-03

本文主要包含H5,触摸与单击,事件处理等相关知识,匿名希望在学习及工作中可以帮助到您
在HTML5中, 如果基于鼠标的界面互动是单击, 触摸界面的基本交互方式就是 轻触.

一. 轻触与单击有相似之处, 但是也有不同.

即使触摸设备(例如: 手机) 没有鼠标,它们的浏览器仍然会触发鼠标事件, click, mouseover, mousedown 和 mouseup 都还会被触发。

二. 移动浏览器有四种类型的触摸事件

事件名称 描述 包含touches 数组
touchstart触摸开始 是
touchmove接触点改变是
touchend触摸结束是
touchcancel触摸被取消否


touches 数组 是一组触摸事件所产生的触摸对象, 触摸对象代表着触摸屏幕的手指。

三. 处理触摸事件

第一种方式,使用浏览器支持的标准触摸事件, 看一个示例 index.html :


<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8">
	<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
	<meta name="viewport" content="width=device-width">
	<title>Touch</title>
	<style type="text/css" media="screen">
		body {
			margin: 0;
			padding: 0;
			font-family: sans-serif;
			text-align: center;
		}
		
		.button {
			font-size: 16px;
			padding: 10px;
			font-weight: bold;
			border: 0;
			color: #fff;
			border-radius: 10px;
			box-shadow: inset 0px 1px 3px #fff, 0px 1px 2px #000;
			background: #ff3019;
			opacity: 1;
		}
		
		.active, .button:active {
			box-shadow: inset 0px 1px 3px #000, 0px 1px 2px #fff;
		}

		.hidden {
			display: none;
		}
	</style>
</head>
<body>
	<p id="touchme">
		<button class="button" id="toggle">切换图片</button>
		<p class="hidden" style="display: none">
			<p>Goldfinch by ibm4381 on Flickr</p>
			<a href="http://www.flickr.com/photos/j_benson/3504443844/" 
				title="Goldfinch by ibm4381, on Flickr">
				<img src="http:///" 
					width="320" height="256" alt="Goldfinch">
			</a>
		</p>
	</p>
</body>
<script type="text/javascript" charset="utf-8">
	var node = document.getElementById('toggle');
	
	function togglePicture(){
		var h = document.querySelector(".hidden");
		if(h.style.display == "none") {
			h.style.display = "block";
		} else {
			h.style.display = "none";
		}
	}
	
	node.addEventListener('touchstart', function(e){
		alert("touchstart");
		//阻止事件的默认行为导致按钮不会出现活跃状态(active)
//		e.preventDefault();
		e.target.className = "active button";
		togglePicture();
	});
	
	node.addEventListener('touchend', function(e){
		//e.preventDefault();
		e.target.className = "button";
	});
	
	node.addEventListener("click", function(e){
		alert("click");
	});
</script>
</html>


效果图如下所示, 注意: 在手机上 会响应触摸事件,不响应单击事件, 在PC 浏览器上 则相反




第二种方式, 自定义事件

使用 addEventListener来 订阅事件. 使用它可以定义何时触发事件以及事件的行为.

还是 仿照上个示例, 作些修改, 步骤如下:

1. 使用 自定义事件


node.addEventListener("tap",  function(e){
    togglePictrue();
});
node.addEventListener("touchstart",  function(e){
     var tap = document.createEvent("CustomEvent");
    tap.initCustomEvent("tap",  true,  true,  null);
    node.dispatchEvent(tap);
});

在这里 initCustomEvent 方法需要四个参数,

● 该事件的名称


● 该事件是否冒泡


● 该事件是否可以取消


● 详细数据, 一个任意的数据,会在初始化事件时传递过去

2. 需要添加一个touchstart 监听器,并且 单击(click) 仍然不可用。 因此要检测是否支持触摸事件, 否则降为兼容到使用鼠标事件。


function addTapListener(node, callback) {
		
		node.addEventListener('tap', callback);
		
		//一开始 定义为鼠标 按下,抬起事件,这是为PC浏览器考虑的
		var startEvent = 'mousedown', endEvent = 'mouseup';
		
		//if touch events are available use them instead
		if (typeof(window.ontouchstart) != 'undefined') {
			
			//如果判断为触摸设备,改变为触摸开始、触摸结束事件
			startEvent = 'touchstart';
			endEvent   = 'touchend';
		}
		
		//开始事件
		node.addEventListener(startEvent, function(e) {
			var tap = document.createEvent('CustomEvent');
			tap.initCustomEvent('tap', true, true, null);
			node.dispatchEvent(tap);
		});	
		
		//结束事件
		node.addEventListener(endEvent, function(e) {
			var tapend = document.createEvent('CustomEvent');
			tapend.initCustomEvent('tapend', true, true, null);
			node.dispatchEvent(tapend);
		});
	}	





调用 上述方法的代码是这样的:


addTapListener(node, function(e){
		e.preventDefault();
		e.target.className = 'active button';
		togglePicture();
});





通过这两步,基本完成了需求。

完整代码如下, tap.html:


<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8">
	<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
	<meta name="viewport" content="
  


 

您可能想查找下面的文章:

  • 详解HTML5之pushstate、popstate操作history,无刷新改变当前url
  • HTML5各种头部meta标签的功能(推荐)
  • 如何用H5实现一个触屏版的轮播器的实例
  • H5新属性audio音频和video视频的控制详解(推荐)
  • HTML5页面音视频在微信和app下自动播放的实现方法
  • H5 meta小结(前端必看篇)
  • 浅谈h5自定义audio(问题及解决)
  • h5调用摄像头的实现方法
  • HTML5单页面手势滑屏切换原理
  • Html5实现二维码扫描并解析

相关文章

  • 2017-08-31细说h5中cookie,localstorage与sessionstorage的区别
  • 2018-12-03分享一个H5上传本地图片以及预览功能的图文实例
  • 2018-12-03HTML5边玩边学(四)-变幻的色彩
  • 2018-12-03HTML5无插件多媒体Media-音频audio与视频video的详细介绍
  • 2018-12-03HTML5属性:form表单属性的用法实例
  • 2018-12-03基于 WebSocket 构建跨浏览器的实时应用
  • 2018-12-03html5移动页面如何自适应屏幕?html5页面自适应手机屏幕的四种方法
  • 2018-12-03深入解析HTML5 Canvas控制图形矩阵变换的方法_html5教程技巧
  • 2018-12-03HTML5 之2__列表标记
  • 2018-12-03css书写顺序需要注意哪些?

文章分类

  • html/xhtml
  • html5
  • CSS
  • XML/XSLT
  • Dreamweaver教程
  • Frontpage教程
  • 心得技巧
  • bootstrap
  • vue
  • AngularJS
  • HBuilder教程
  • css3
  • 浏览器兼容
  • div/css
  • 网页编辑器
  • axure

最近更新的内容

    • H5 的复制操作实例代码
    • 小强的HTML5移动开发之路(1)——HTML介绍
    • HTML5拖拽文件到浏览器并实现文件上传下载功能代码_html5教程技巧
    • HTML4和HTML5之间除了相似以外的10个主要不同_html5教程技巧
    • ios版的youtube如何做到没有下载更新可是图标和内容都自动变了?
    • H5混合开发app如何升级
    • 使用canvas绘制超炫时钟
    • 整理的15个非常有用的 HTML5 开发教程和速查手册_html5教程技巧
    • canvas绘制奥运五环代码分享
    • HTML5游戏框架cnGameJS开发实录-实现动画原理

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有