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

对Tap事件和Tap点透原理的分析

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

本文主要包含html5,javascript等相关知识,匿名希望在学习及工作中可以帮助到您
这篇文章给大家介绍的文章内容是关于对Tap事件和Tap点透原理的分析,有很好的参考价值,希望可以帮助到有需要的朋友。

首先介绍tap事件:

  1. tap事件的意义:在移动端,click事件会有300ms延迟,因为浏览器通过判断300ms内是否会继续点击,来判断是否缩放网页。(即双击放大网页的效果有一个300ms的时间来判断,300ms过去了,才会触发click事件)

  2. tap事件的实现:使用浏览器默认支持的touch事件来模拟,根据touchstart、touchmove、touchend这三个事件进行模拟tap事件,达到封装tap事件的效果。下面的代码是我做的一个简易的封装。

//定义tap函数,传入需要绑定的元素,和一个回调函数
function tap(el,callBack){
    var startTime = 0;
    var maxTime = 250;
    var [startX,startY,endX,endY] = [0,0,0,0]; //es6解构赋值
    el.addEventListener('touchstart',function(e){                            
        console.log('touchstart');
        startTime = Date.now(); //开始触摸的事件  
        startX = e.touches[0].clientX; //手指在浏览器横坐标
        startY = e.touches[0].clientY; //手指在浏览器纵坐标
    })
    el.addEventListener('touchmove',function(e){
        console.log('touchmove');
        endX = e.touches[0].clientX; //手指在浏览器横坐标
        endY = e.touches[0].clientY; //手指在浏览器纵坐标
    })
    el.addEventListener('touchend',function(e){
        console.log('touchend');
        if( (Date.now()-startTime) > maxTime){ //如果超过了最大时间,不触发tap
               console.log('超时了');
            return ; 
        }
        //如果移动距离过大,则不是tap事件。为了大家在电脑上能看到效果,这里设置成了1000,因为在电脑上移动幅度不好控制。如果是在移动端,设置为30就差不多了。
        if(Math.abs(endX-startX) > 1000 || Math.abs(endY-startY) > 1000){
             return;
        }
        callBack(e);
     })
}
tap(document.documentElement,function(e){
    console.log(e);
});

梳理一下:tap事件的顺序就是 touchstart -> touchmove -> touchend -> 在touchend中执行回调

tap点透的原理:

  1. 常见到有这种应用场景,点击遮罩层,遮罩层消失,露出底部的页面。当底部的页面中某个元素绑定了click事件,并且点击遮罩的时候正好点的是该元素的位置,会发现该元素的click事件被触发了。

  2. click在PC端触发顺序是mousedown -> mousemove -> mouseup -> click这个顺序来执行的,在移动端触发顺序是touchstart -> touchmove -> touchend -> click这个顺序执行。因为在touchend的时候我们的遮罩已经消失了,所以相当于点击到了底部页面中的元素。所以底部元素会触发click事件。

tap点透的解决方案:

  1. 统一使用tap事件,或者click事件。

  2. 延迟遮罩层消失的时间,使其超过300ms

  3. 拿个透明遮罩挡住(不推荐,太笨了,还麻烦)

  4. 使用fastclick库

相关推荐:

HTML5新增属性:五种全局属性的介绍

canvas原生实现前端网页移动端签名

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

  • HTML5知识点总结
  • HTML5的本地存储
  • HTML5本地存储之IndexedDB
  • Html5实现文件异步上传功能
  • Html5新标签datalist实现输入框与后台数据库数据的动态匹配
  • 详解HTML5 window.postMessage与跨域
  • HTML5拖放API实现拖放排序的实例代码
  • 解决html5中video标签无法播放mp4问题的办法
  • HTML5新特性 多线程(Worker SharedWorker)
  • Html5新增标签有哪些

相关文章

  • 2017-08-06HTML5 Web Database 数据库的SQL语句的使用方法
  • 2018-12-03一款利用html5和css3动画排列人物头像的实例演示_html5教程技巧
  • 2018-12-03H5制作二维码扫描和解析的代码实例
  • 2017-08-06实例教程 HTML5 Canvas 超炫酷烟花绽放动画实现代码
  • 2018-12-03【HTML5】3D模型--百行代码实现旋转立体魔方实例
  • 2018-12-03h5正常文本框提示语的实现方法
  • 2018-12-03安卓平台的浏览器 touchend 事件触发失效?
  • 2017-08-06html5 更新图片颜色示例代码
  • 2018-12-03HTML5拖拽功能实现的拼图游戏
  • 2018-12-03html5需遵循怎样的6个设计原则?

文章分类

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

最近更新的内容

    • h5新特性的用法:监听App自带的返回键
    • 使用HTML5 Canvas API控制字体的显示与渲染的方法
    • HTML5的五大优秀功能介绍
    • 分享一个利用H5实现下拉顶部放大的实例代码
    • 使用html5可以干什么?Html5的优势和劣势(总结)
    • html5 css3网站菜单实现代码
    • 什么是校验功能?校验功能实例用法汇总
    • 简单html5代码获取地理位置_html5教程技巧
    • HTML5的下拉框应该如何增加用户体验
    • Web页面跳转并取值的方法指导

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

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