移动web touch事件
参考:http://www.cnblogs.com/dojo-lzz/p/5452575.html
wap中的原生touch 事件,touchstart、touchmove、touchend、touchcancel,这些事件仅仅在移动端才会被触发,在pc端无效。而且在web中也没有PC的鼠标事件。两个端都存在click事件,但在web下会存在以下两个问题:
移动端click事件存在300ms延迟
因为网页中存在一种双击放大的操作,两次点击之间不超过300ms则认为是双击,所以浏览器为了区别是双击还是单击,单击的效果会有300ms延迟。了有更好的用户体验,需要自己利用以上的4个touch事件封装一些更快的点击事件(一般由touchstart以及touchend组成)其实也可以使用第三方库如zepto,使用里面封装的tab事件。或者使用插件 fastclick。
穿透现象
遮罩上绑定一个touchstart事件,触发就使遮罩消失,然后300ms后触碰点下的元素的click事件会被触发。原因也还是因为以上的300ms延迟。点击300ms发生后,浏览器寻找触碰点的顶层元素,然后触发一次click事件,大致过程如下:
e = document.elementFromPoint(x, y);
e.dispatchEvent('click');
以下代码会出现穿透现象
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no">
<title></title>
</head>
<body>
<style>
.splash{
position: fixed;
width: 100%;
height: 100%;
background-color: rgba(99,99,99,0.2);
}
</style>
<div class="splash"></div>
<button onclick="console.log('click')">这是按钮</button>
<script>
let splash = document.querySelector('.splash');
splash.addEventListener('touchend',()=>{
splash.style.display = "none";
})
</script>
</body>
</html>
为了解决以上两个问题,需要自己封装web的点击事件,封装的思路如下:
- touchstart和touchend组成一次点击事件,按下和抬起之间所移动的距离不得超过4px
- 在捕获阶段,对click事件进行事件流拦截
移动web touch事件的更多相关文章
- 移动web——touch事件应用
基本概况 1.touch事件在移动端被用来代替click事件,因为click事件的触发会延迟影响了用户体验 2.touch事件还可以与translate构成吸附效果 3.现行有一种排版方式是左边宽度是 ...
- 移动web——touch事件介绍
基本概念 1.在移动web端点击事件或者滑动屏幕.捏合等动作都是由touchstar.touchmove.touchend这三个事件组合在一起使用的 2.click事件在移动端会有0.2秒的延迟,下面 ...
- Touch事件在移动端web开发中的详解
一.pc端事件回顾 HTML事件.DOM0事件.DOM2事件 事件对象. 如果上述概念不清楚,请先去了解. 二.移动端事件简介 2.1 pc端事件在移动端的问题 移动设备主要特点是不配备鼠标,键盘 ...
- 移动端Web界面滚动touch事件
解决办法一: elem.addEventListener( 'touchstart', fn, { passive: false } ); 解决办法二: * { touch-action: pan-y ...
- 从零开始学 Web 之 移动Web(五)touch事件的缺陷,移动端常用插件
大家好,这里是「 从零开始学 Web 系列教程 」,并在下列地址同步更新...... github:https://github.com/Daotin/Web 微信公众号:Web前端之巅 博客园:ht ...
- javascript移动设备Web开发中对touch事件的封装实例
在触屏设备上,一些比较基础的手势都需要通过对 touch 事件进行二次封装才能实现.zepto 是移动端上使用率比较高的一个类库,但是其 touch 模块模拟出来的一些事件存在一些兼容性问题,如 ta ...
- 移动web开发之touch事件
前面的话 iOS版Safari为了向开发人员传达一些特殊信息,新增了一些专有事件.因为iOS设备既没有鼠标也没有键盘,所以在为移动Safari开发交互性网页时,常规的鼠标和键盘事件根本不够用.随着An ...
- 移动端开发概览【webview和touch事件】
作为一个前端,而且作为一个做移动端开发的前端,那意味着你要有三头六臂,跟iOS开发哥哥一起打酱油,跟Android开发哥哥一起修bug... Android vs Ios 我在webkit内核的chr ...
- mobile touch事件
touch.js 众所周知,mobile与pc 前端开发的不同中,有一点就是事件的不同,mobile上有touchstart,touchmove,touchend等,而pc上用最多的应该还是我们的cl ...
随机推荐
- Django学习:ORM
Object Relational Mapping(ORM) ORM介绍 ORM概念 对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据 ...
- javascript E5面向对象和 E6面向对象
javascript es6之前的面向对象方法: 一般使用构造函数来实现 function Person (name, age) { this.name = name; this.age = age; ...
- 浅谈欧拉函数 By cellur925
1.某神犇Blog 学了三遍的 欧拉函数φ--DEADFISH7 2.我要做一些补充o(* ̄▽ ̄*)o $φ(1)=1$: 公式有两种形式,一种有太多除法,实际可能会慢些.通用 对于任意$n$> ...
- php in_array 的 坑
话不多说,直接上代码 $str = '7.php'; var_dump(in_array($str,range(0,100))); die; 是 true 这是因为 php是弱类型语言,会把7.php ...
- python之类的相关名词-继承-
继承:父类有的功能,子类继承后也都有 继承是直接把父类方法写入子类的object里 如果定义的类有很多重复的功能,可以把重复的类定义成父类 静态方法:不需要实例化就可以调用,不可以调用类里面的变量和方 ...
- 第05课 Linux命令初探(一)
该篇为第一部分,主要介绍的Linux指令有: mkdir.cd.ls.rm.touch.vi/vim.echo.cat.cp.mv.pwd.rm.rmdir 1.创建一个目录/data 提示:Wind ...
- Unity3d的Sprite Packer用法介绍
我们用来做sprite 的图片,通常会留有很多空白的地方,我们在画完了sprite之后,这些地方很可能就没有什么作用了.如果想避免这些资源上的浪费,我们可以把各个sprite做成图集,把图片上的空间尽 ...
- CentOS Linux下MySQL 5.1.x的安装、优化和安全配置
下载页面:http://dev.mysql.com/downloads/mysql/5.1.html#downloads 到页面底部,找到Source downloads,这个是源码版本,下载第1个T ...
- sql server group by 分组带sum avg求和需要注意的一点
这是在写SQL语句遇到的一个sum 和group bu分组的问题
- Macbook air 上打开cocoscreator出错
Error: EROFS: read-only file system, open '/Volumes/Cocos Creator/CocosCreator.app/Contents/Resource ...