移动端tap事件(轻击、轻触)

一、问题

①移动端也有click点击事件,click点击会延迟200~300ms

②因为点击的响应过慢,影响了用户体验,所以需要解决响应慢的问题

二、解决方案

①使用tap事件:即轻击,轻敲,响应速度快(不是原生事件,是通过touch相关事件衍生过来的)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>tap事件</title>
    <style>
        .body{
            margin: 0;
            padding: 0;
        }
        .box{
            width: 200px;
            height: 200px;background: #ccc;
            float: left;
        }
    </style>
</head>
<body>
    <div class="box"></div>
    <script>
        window.onload=function(){
            // 封装事件
            bindTapEvent=function(dom,tapCallback,clickCallback){
                var startTime=0;
                var isMove=false;
                dom.addEventListener(‘touchstart‘,function(e){
                    startTime=Date.now()
                });
                dom.addEventListener(‘touchmove‘,function(e){
                    isMove=true
                });
                dom.addEventListener(‘touchend‘,function(e){

                    if((Date.now()-startTime)<150 && isMove){
                        // 假设点击的时间间隔小于150ms为轻击事件
                        tapCallback && tapCallback.call(this,e)
                    }else{
                        // 假设点击的时间间隔大于150ms为点击事件
                        clickCallback && clickCallback.call(this,e)
                    }
                    startTime=0;
                    isMove=false;
                });
            }
            // 调用
            bindTapEvent(document.querySelector(‘.box‘),function(e){
                console.log(‘tap事件‘)
            },function(e){
                console.log(‘click事件‘)
            })
        }
    </script>
</body>
</html>

②使用fastclick.js插件:可以提高移动端click响应速度,下载地址:https://github.com/ftlabs/fastclick

    <script src="fastclick.js"></script>
    <script>
        // 当页面的dom元素加载完成
        document.addEventListener(‘DOMContentLoaded‘,function(){
            // 初始化方法
            FastClick.attach(document.body);
        },false);
        // 正常使用click事件即可
    </script>

具体用法可以参考:

原文地址:https://www.cnblogs.com/EricZLin/p/9334821.html

时间: 2024-11-05 23:37:20

移动端tap事件(轻击、轻触)的相关文章

js移动端tap事件封装

这几天做项目,发现移动端需要触摸事件,而click肯定是不行的,于是我对tap事件封装进行了搜索,找到了一篇文章,原文地址如下:http://www.jb51.net/article/50663.htm, 我对其中第一个封装加了一点东西,把它封装在一个函数里面,使用的时候直接调用即可,源代码如下(tap.js): function tap(ele, fn){ var startTx, startTy; var endTx, endTy; ele.addEventListener( 'touchs

移动端tap事件的封装

/*封装tap*/ cc.tap = function(dom,callback){ /* * 要求 没有触发 touchmove 事件 * 并且响应速度要比click快 */ if(dom && typeof dom == 'object'){ var isMove = false; var startTime = 0; dom.addEventListener('touchstart',function(e){ //console.log('touchstart'); //consol

使用原生JS封装Tap事件,解决移动端300ms延迟

为了防止误操作,移动端iOS操作系统针对原生click事件做了300ms的延迟,这在一定程度上影响了我们的使用体验. GitHub项目地址:https://github.com/SimonZhangITer/MyTapEvent FastClick 现在有现成的插件fastclick可以解决这个问题,但是也有弊端: GitHub上最新版本的插件大小为25.4kb,轻量为趋势,能省则省. 它的核心思想是取消默认的click时间,判断当前dom节点的类型进行相应的操作,这个判断过程较为繁琐. MyT

移动端WEB开发,click,touch,tap事件浅析

一.click 和 tap 比较 两者都会在点击时触发,但是在手机WEB端,click会有 200~300 ms,所以请用tap代替click作为点击事件. singleTap和doubleTap 分别代表单次点击和双次点击. 二.关于tap的点透处理 在使用zepto框架的tap来移动设备浏览器内的点击事件,来规避click事件的延迟响应时,有可能出现点透的情况,即点击会触发非当前层的点击事件. 处理方式: (1). github上有一个叫做fastclick的库,它也能规避移动设备上clic

iOS 轻击、触摸和手势的检测

一.检测捏合手势( UIPinchGestureRecognizer): //设定一个实例变量存储手指之间的其起始距离 @property (assign, nonatomic) CGFloat initialFontSize; //调用: UIPinchGestureRecognizer *pinch = [[UIPinchGestureRecognizeralloc] initWithTarget:selfaction:@selector(doPinch:)]; [self.viewaddG

10行代码搞定移动web端自定义tap事件

发发牢骚 移动web端里摸爬滚打这么久踩了不少坑,有一定移动web端经验的同学一定被click困扰过.我也不列外.一路走来被虐的不行,fastclick.touchend.iscroll什么的都用过,各有优劣,都不能一步到位.最后实在是被逼无奈,翻阅了不少资料,自定义了一个tap. 效果预览 废话不多说先上效果 移动端预览 一探真假 真的只有10行 插件是基于jQuery的,上代码. //自定义tap $(document).on("touchstart", function(e) {

移动端点击、触碰

这篇文章将会阐述以下问题 延迟的click 拥抱tap 一次触碰 阻止它们!!!preventDefault还是stopPropagtion 模拟事件是什么鬼 事故现场 延迟 点穿(包含angular的ng-click) 焦点获取 分析Yocto,zepto,fastclick带来的思考 zepto -- 万恶的tap fastclick -- “完美” Yocto -- “后zepto时代替代者” 让我们开始吧! 迟到的click “移动端最好用tap,click是有延迟的...” 开始写移动

移动端click事件延迟300ms的原因以及解决办法

这要追溯至 2007 年初.苹果公司在发布首款 iPhone 前夕,遇到一个问题 —— 当时的网站都是为大屏幕设备所设计的.于是苹果的工程师们做了一些约定,应对 iPhone 这种小屏幕浏览桌面端站点的问题.这当中最出名的,当属双击缩放(double tap to zoom).这也是会有上述 300 毫秒延迟的主要原因. 当用户一次点击屏幕之后,浏览器并不能立刻判断用户是要进行双击缩放,还是想要进行单击操作.因此,iOS Safari 就等待 300 毫秒,以判断用户是否再次点击了屏幕. 于是,

移动端click事件延迟300ms的原因以及解决办法[转载]

原文: 这要追溯至 2007 年初.苹果公司在发布首款 iPhone 前夕,遇到一个问题 —— 当时的网站都是为大屏幕设备所设计的.于是苹果的工程师们做了一些约定,应对 iPhone 这种小屏幕浏览桌面端站点的问题.这当中最出名的,当属双击缩放(double tap to zoom).这也是会有上述 300 毫秒延迟的主要原因. 当用户一次点击屏幕之后,浏览器并不能立刻判断用户是要进行双击缩放,还是想要进行单击操作.因此,iOS Safari 就等待 300 毫秒,以判断用户是否再次点击了屏幕.