移动端touch与click区别--移动端开发整理笔记(五)
移动端用touch还是click?
在移动端开发中,click事件有300ms的延时,由来源于iphone处理双击缩放功能种下的坑。因为用手指在屏幕上快速点击两次,iOS 自带的 Safari 浏览器会将网页缩放至原始比例。为了区分用户的操作是双击还是单击,就增加了300ms的延时等待!随着touch端界面的发展,用户体验的提高使得300ms让人难以忍受。
touch事件存在的问题:
某些场景下存在点击穿透的问题。(在移动端,手指点击一个元素,会经过:touchstart --> touchmove -> touchend --》click。可通过在touch事件中取消默认事件,e.preventDefault()来解决。)
touchstart事件时触摸屏幕就会触发,touchend事件是手指离开屏幕就会触发,而有时候,我们仅仅是只想滑动屏幕,却会触发这两个事件。
对于300ms问题解决方案:
直接使用 fastclick
优点:全局引入,方便省事
缺点:增加插件冗余?
使用 zepto touch
优点:基于 zepto 核心,还提供 singleTap, doubleTap, longTap, swipe 等简单触控类型判断。
缺点:坑多,例如使用 setTimeout 延迟触发事件,需要解决点透问题。
直接原生绑定 touchstart / touchend
优点:除了减少插件依赖,好像没想到什么优点。
缺点:需要处理 touchmove scroll 的一些误杀。也不一定就解决快,原生往往预示着需要自己处理一大堆东西。
造轮子,封装到自己(团队)的核心框架里
禁用缩放。
当在html文档中包含如下标签:
<meta name="viewport" content="user-scalable=no"/> <meta name="viewport" content="init-scale=1.0,maximum-scale=1.0" />
表明这个页面是不可以缩放的,那么双击缩放的功能就没有意义了。
改变默认的视口宽度
<meta name="viewport" content="width=device-width" />
现在的移动端开发已经不太需要关注 300ms 的问题了,因为主流的移动浏览器都已经对设置以上meta的页面去除了 300ms 的延迟。对旧的系统及浏览器使用fastclick。
移动端touch与click区别--移动端开发整理笔记(五)的更多相关文章
- meta设置与去除默认样式--移动端开发整理笔记(一)
视口设置: <meta name="viewport" content="width=device-width,user-scalable=no,initial-s ...
- 移动端touch、click、tap的区别
一.click 与tap比较 click与tap都会出发点击事件,但是在手机web端,click会有200-300ms延迟,所以一般用tap(轻击)代替click作为点击事件.singleTap 和 ...
- 移动端事件(touchstart、touchmove、touchend)--移动端开发整理笔记(三)
移动端事件 三个事件 touchstart 手指触摸 相当于PC端 mousedown touchend 手指抬起 相当于PC端 mouseup touchmove 手指滑动 相当于PC端 mousm ...
- Flex弹性盒模型(新老版本完整)--移动端开发整理笔记(二)
Flex布局 Flex即Flexible Box,写法为:display:flex(旧版:display: -webkit-box) 在Webkit内核下,需要加-webkit前缀: .box{ di ...
- 移动端适配(rem & viewport)--移动端开发整理笔记(四)
移动端适配 通过rem适配 em: 根据元素自身的字体大小来计算自己的尺寸 rem: (root em) 根据根节点(html)的字体大小来计算自己的尺寸 我们知道,在不同的手机设备,分辨率大小是 ...
- 移动端tap与click的区别 && 点透事件
移动端的问题 移动端的主要问题是click会有300ms的延迟,主要原因是苹果手机在设计时,考虑到用户在浏览网页时需要放大,所以,在用户点击的300ms之后,才触发click,如果300ms之内还有c ...
- 移动端的传统click事件延迟和点透现象
一.场景描述: 1.A/B两个层上下z轴重叠. 2.上层的A点击后消失或移开.(这一点很重要) 3.B元素本身有默认click事件(如a标签) 或 B绑定了click事件. 在以上情况下,点击A/B重 ...
- 移动端Touch事件基础
1.三个常用的移动端事件 ontouchstart 手指按下时触发 ontouchmove 手指移动时触发 ontouchend 手动抬起时触发 注意:这些事件当作事件属性使用时,不兼容谷歌浏览器. ...
- 原生 JS 实现移动端 Touch 滑动反弹
什么是 Touch滑动?就是类似于 PC端的滚动事件,但是在移动端是没有滚动事件的,所以就要用到 Touch事件结合 js去实现,效果如下: 1. 准备工作 什么是移动端的 Touch事件?在移动端 ...
随机推荐
- Intellij IDEA使用一 创建javaweb项目并配置tomcat
一.新建Java web项目 参考:https://blog.csdn.net/chengtengfei352/article/details/79211619 1.点击创建新项目 2. 3.crea ...
- [报名中] 腾讯技术专家为你揭秘"音视频及融合通信技术"
| 导语 6月29日,北京东直门亚朵S酒店,云+社区邀您参加<音视频及融合通信技术>沙龙活动,深度探讨音视频及融合通信技术的发展及实践,领略前沿,共创价值. 数字多媒体技术的不断发展对音视 ...
- Redis快速入门及使用
概述 redis是一种支持分布式的nosql数据库,他的数据是保存在内存中,同时redis可以定时把内存数据同步到磁盘,即可以将数据持久化,并且他比memcached支持更多的数据结构(string, ...
- Collection和Collections有什么区别?
本文链接:https://blog.csdn.net/xiangyuenacha/article/details/84237663 1.java.util.Collection 是一个集合接口 ...
- Ethics
1.What are Ethics? Ethics describe a code of behaviour 2.Why Ethics in Data Science is important? da ...
- R语言学习基础一
笔者使用Rstudio编写R程序,本文主要总结在编写过程中遇到的一些实际 问题 与学习配套的的code上传到我的github,网址: https://github.com/LIU-HONGYANG/S ...
- HTTP之网关的分类
网关的分类 ========================摘自<HTTP权威指南>============================= 1. HTTP/*:服务器端Web网关 请 ...
- python爬取电影网站信息
一.爬取前提1)本地安装了mysql数据库 5.6版本2)安装了Python 2.7 二.爬取内容 电影名称.电影简介.电影图片.电影下载链接 三.爬取逻辑1)进入电影网列表页, 针对列表的html内 ...
- [完整版]Postgresql 数据库 备份以及恢复的过程
0. 准备工作 linux机器上面 必须安装上pg数据库 然后 需要将 pg的主程序目录 放到环境变量里面去 便于执行命令. 1. 先备份 . 备份目标数据库: pg_dump -h -F c -f ...
- [转帖]springboot+k8s+抛弃springcloud.eureka
springboot+k8s+抛弃springcloud.eureka https://www.cnblogs.com/lori/p/12048743.html springboot开发微服务框架一般 ...