移动端用touch还是click? 在移动端开发中,click事件有300ms的延时,由来源于iphone处理双击缩放功能种下的坑.因为用手指在屏幕上快速点击两次,iOS 自带的 Safari 浏览器会将网页缩放至原始比例.为了区分用户的操作是双击还是单击,就增加了300ms的延时等待!随着touch端界面的发展,用户体验的提高使得300ms让人难以忍受. touch事件存在的问题: 某些场景下存在点击穿透的问题.(在移动端,手指点击一个元素,会经过:touchstart --> touchmo…
视口设置: <meta name="viewport" content="width=device-width,user-scalable=no,initial-scale=.5,minimum-scale=.5,maximum-scale=1"> 默认不设置viewport一般可视区宽度在移动端是980 width 可视区的宽度 (number||device-width) user-scalable 是否允许用户缩放 (yes||no) iOS10无…
一.click 与tap比较 click与tap都会出发点击事件,但是在手机web端,click会有200-300ms延迟,所以一般用tap(轻击)代替click作为点击事件.singleTap 和 doubleTap分别代表单击和双击. 二.使用tap会出现点透事件(事件穿透) 很多用过Zepto(移动端开发的库)都说使用tap会出现点透事件. 1.什么是tap事件穿透 执行完上层绑定的tap事件后,下层如果绑定着click事件或者本身就存在点击事件(a/input)也会默认触发,这就是点透事…
移动端事件 三个事件 touchstart 手指触摸 相当于PC端 mousedown touchend 手指抬起 相当于PC端 mouseup touchmove 手指滑动 相当于PC端 mousmove 注意: touch事件在chrome的模拟器下,部分版本通过on的方式来添加事件无效,这时候需要事件监听的方法 addEventListener("事件名",函数,冒泡或捕获),它有以下优点: 不会存在事件前后覆盖问题 在chrome的模拟器下可以一直识别 写法如下: box.ad…
Flex布局 Flex即Flexible Box,写法为:display:flex(旧版:display: -webkit-box) 在Webkit内核下,需要加-webkit前缀: .box{ display: -webkit-flex; //safari display: flex; } 注意: 1.css 列(CSS columns)在弹性盒子中不起作用 2.float, clear and vertical-align 在flex项目中不起作用 新旧兼容写法: .box{ display…
移动端适配 通过rem适配 em: 根据元素自身的字体大小来计算自己的尺寸 rem: (root em) 根据根节点(html)的字体大小来计算自己的尺寸   我们知道,在不同的手机设备,分辨率大小是不一样的.为了使页面在不同分辨率下等比缩放,需要动态的设置Html的字体大小来达到页面等比缩放的效果.我们可以如下设置rem值: function() { var html = document.querySelector("html"); var width = html.getBoun…
移动端的问题 移动端的主要问题是click会有300ms的延迟,主要原因是苹果手机在设计时,考虑到用户在浏览网页时需要放大,所以,在用户点击的300ms之后,才触发click,如果300ms之内还有click,就会进行放大缩小. 但是,问题是大部分时候放大.缩小时不需要的,有时开发者也会禁用他们,那么300ms的延迟就是性能上的损耗的,所以,如何解决这300ms的延迟? 在移动端,最容易想到的就是使用touchend来替代click,但是touchend是存在很大的问题的,因为touchend之…
一.场景描述: 1.A/B两个层上下z轴重叠. 2.上层的A点击后消失或移开.(这一点很重要) 3.B元素本身有默认click事件(如a标签) 或 B绑定了click事件. 在以上情况下,点击A/B重叠的部分,就会出现点透的现象. 二.点透现象的分析 在移动端不使用click而用touch事件代替触摸是因为click事件有着300ms的延迟,事件触发的顺序: touchstart--touchmove--touchend--click touchstart:在这个DOM(或冒泡到这个DOM)上手…
1.三个常用的移动端事件 ontouchstart 手指按下时触发 ontouchmove 手指移动时触发 ontouchend 手动抬起时触发 注意:这些事件当作事件属性使用时,不兼容谷歌浏览器. 解决方案是,使用 addEventListener()来注册这些移动端事件. 2.pc端事件和移动端事件的区别 1)通过 on的方式添加touch事件,在谷歌浏览器下无效. 2)pc端的鼠标事件,用在移动端使用时,会产生300毫秒的延迟. 3.移动事件对象 TouchEvent TouchEvent…
什么是 Touch滑动?就是类似于 PC端的滚动事件,但是在移动端是没有滚动事件的,所以就要用到 Touch事件结合 js去实现,效果如下: 1. 准备工作 什么是移动端的 Touch事件?在移动端 Touch事件可以细分成三种,分别是: touchstart.touchmove和 touchend,并且 touch事件必须要用 addEventListener去监听. touchStart当手指触碰到屏幕的时候触发 touchmove当手指在屏幕上不断移动的时候触发 touchend当手指离开…