首页
学习
活动
专区
圈层
工具
发布

让 touch 系列事件触发的滚动响应更快

1写在前面 我们都知道,对于移动端的网页而言,滚动是十分重要的交互。 然而 touch 系列事件触发(滚动后)经常会引发严重的性能问题。...为了解决这问题,Chrome (通过允许往addEventListener()中传入{passive: true})让touch系列事件的事件监听器变为“被动”(译者注:其实就是touch之后,不再是执行完事件函数后再滚动...下图展示了用户触发滚动后到真正滚动期间,耗时最长的前百分之一案例中所耗费的时间。这些数据是由安卓上的 Chrome 访问任意网页后采集的。...极个别的例子是,开发者发现(如果不在touchend事件处理函数中调用preventDefault()) click 事件被触发了。...只有在为了阻止之后的默认行为(如将要触发的click事件)时,才应该在touchend的事件处理函数中调用preventDefault()。

1.5K20

进阶必备-Android Click事件是怎么触发的?

由于有同学问到onClick和touch事件的关系,这里就从源码的角度分析下onClick和onLongClick与onTouchEvent事件是怎么关联的。...所以,我们猜测是在MotionEvent.ACTION_UP事件后触发click的。所以我们直接看if条件中的ACTION_UP中的逻辑: if (!...然后会通过Post Runable的方式将PerformClick的实例post到队列中等待处理,不直接去处理click事件而是使用post的方式是确保如果有视图相关的更新操作完成后再触发performClickInternal...留给读者自己去详细的看下源码,这里简单的介绍下。 onLongClick事件是如何处理的呢?...因为onCLick事件是在手指抬起后触发的,所以我们选择分析的是ACTION_UP事件,但是长按事件是在我们长按某个View的时候触发的,所以并没有将手指抬起来。

2.8K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    jimojianghu

    立马联系用户,才发现原来是用户使用笔记本电脑,没有禁用触控板,然后不小心碰到导致整个界面都放大,很多功能超出界面不见了。...然而那能怎么办,用户第一,自然得快速解决这个问题,而且是触控板和触摸屏都得解决。 在以前,如果要禁止移动端设备的触摸屏上,手指缩小放大的功能,都会想到使用viewport 来处理。...现在使用这段代码,已经彻底无效,要想解决问题,得想新的方案。 话不多说,下面先给出具体的解决办法。 触控板 要禁止触控板的缩放行为,需要处理鼠标滚轮事件:wheel 。...禁用双击可缩放功能可减少浏览器在用户点击屏幕时延迟生成点击事件的需要。 触摸动作也经常用于完全解决由支持双击缩放手势引起的点击事件的延迟。 pinch-zoom 启用多手指平移和缩放页面。...会在该类型的事件捕获阶段传播到该 EventTarget 时触发。

    4.7K00

    精读《深入了解现代浏览器四》

    因为在这个区域触发事件时,合成器必须与渲染进程通信,让渲染进程执行 js 事件监听代码并获得用户指令,比如是否调用了 preventDefault() 来阻止滚动?...如果阻止了就终止滚动,如果没有阻止才会继续滚动,如果最终结果是不阻止,但这个等待时间消耗是巨大的,在低性能设备比如手机上,滚动延迟甚至有 10~100ms。...然而这并不是设备性能差导致的,因为滚动是在合成器发生的,如果它可以不与渲染进程通信,那么即便是 500 元的安卓机也可以流畅的滚动。...// 没有用的,无法阻止滚动,因为委托处默认 passive onWheel={event => event.preventDefault()} > ......React16 采用事件代理,把元素 onWheel 代理到 document 节点而非当前节点。

    95610

    DOM事件

    DOM事件是指在HTML文档中,当特定的动作发生时(比如用户点击按钮、页面加载完成等),浏览器会生成相应的事件。...常见的DOM事件包括:点击事件(click): 用户点击页面上的元素时触发。提交事件(submit): 当表单提交时触发。...事件事件:浏览器赋予元素的默认行为,可以理解为事件是天生具备的。不论是否为其绑定方法,当某些行为触发的时候,相关的事件都会被触发执行。...事件绑定:给元素默认的事件行为绑定方法,这样在行为触发的时候才会执行绑定的方法。....onwheel=function(){}滚轮滚动mouseover和mouseenter的区别enter和leave会受到元素之间的层级关系,默认阻止了事件冒泡机制我正在参与2023腾讯技术创作特训营第三期有奖征文

    61920

    再谈BOM和DOM(7):HTML DOM Event 对象属性及DOM事件详细列表

    事件句柄 (Event Handlers) HTML 4.0 的新特性之一是能够使 HTML 事件触发浏览器中的行为,比如当用户点击某个 HTML 元素时启动一段 JavaScript。...下面是一个属性列表,可将之插入 HTML 标签以定义事件的行为。 属性 此事件发生在何时... onabort 图像的加载被中断。 onblur 元素失去焦点。 onchange 域的内容被改变。...2 onscroll 当文档被滚动时发生的事件。 2 onunload 用户退出页面。...使用onwheel 事件替代 ononline 该事件在浏览器开始在线工作时触发。 onoffline 该事件在浏览器开始离线工作时触发。...触发 onwheel 该事件在鼠标滚轮在元素上下滚动时触发 参考文章: ECMAScript、BOM、DOM(核心、浏览器对象模型与文档对象模型)https://www.cnblogs.com

    3.1K40

    后台管理tab栏滑动解决方案

    后台管理系统中比较常见的布局是左边菜单栏,右边tab切换栏,但是一般的tab组件不包含tab页过多的切换问题的,所以需要个性化实现,本文的实现方案是滑动鼠标滚轮绑定tab达到切换的效果,先上一个动态图看下效果...事件的绑定,主要原理是获取tabmain的包含滚条部分的长度与div的总长度(当然tabmain要指定overflow-y为hidden),计算滚动长度(通过scrollLeft()方法获取),与已滚动长度比较...,加入判断滚动方向,通过event.deltaY判断,向上滚动为负值(对应tab向左滚动),向下滚动为正值(对应tab向右滚动),调用tabmian对象的scrollLeft可以实现滚动,完整代码如下...,$(element).width()为div的宽度,计算可得知滚动部分长度 //table.scrollLeft()为div已经滚动了多少,相比较就可以判断div是否滚动完毕 if...(table.scrollLeft() 0) { //禁止事件默认行为(此处禁止鼠标滚轮行为关联到"屏幕滚动条上下移动"行为)

    85130

    【No Problem】如何解决 Mac 左右滚动误触返回事件?

    问题演示如下【注意最后到最左边的时候就触发了返回事件,返回了首页】 问题分析 为什么会触发返回事件? 其实触发返回事件是有一个边界的,这一点我也是自己实践得出来的结论。...产品可能也并不同意这么做,并不是一个很好的解决方案 解决方案三——JavaScript 阻止事件 上面我们提到只有滚动到“超过”滚动区域的水平边界时才会触发,那么我们只要监听 mousewheel 这个事件...= this.scrollWidth - this.offsetWidth; // 如果这个事件看起来要滚动到元素的边界之外,要阻止它 // 其中一个是滚动到最左边,一个是滚动到最右边...默认情况下,平移(滚动)和缩放手势由浏览器专门处理。设置 none,当触控事件发生在元素上时,不进行任何操作。...小结 Mac 中左右滚动导致返回的原因是滚动“超过”滚动区域的水平边界,可以使用 JavaScript 在边界条件中阻止事件,也可以通过 CSS 的 overscroll-behavior-x 控制滚动的行为

    3.1K20

    触屏事件

    比如触屏事件 touch(也称触摸事件),Android和 IOS 都有。 touch 对象代表一个触摸点。触摸点可能是一根手指,也可能是一根触摸笔。...触屏事件可响应用户手指(或触控笔)对屏幕或者触控板操作。 常见的触屏事件如下: ? 2....触摸事件对象(TouchEvent) TouchEvent 是一类描述手指在触摸平面(触摸屏、触摸板等)的状态变化的事件。...这类事件用于描述一个或多个触点,使开发者可以检测触点的移动,触点的增加和减少,等等 touchstart、touchmove、touchend 三个事件都会各自有事件对象。...(2) 移动手指 touchmove: 计算手指的滑动距离,并且移动盒子 (3) 离开手指 touchend: 注意: 手指移动也会触发滚动屏幕所以这里要阻止默认的屏幕滚动 e.preventDefault

    1.4K41

    Flutter 3.3更新详解

    Flutter 3 是我们正式为全平台提供支持的一个重量级里程碑,距离它的发布仅过去了三个月,今天让我们有请 Flutter 3.3 正式版!...将页面滚动到底部的 DartPad,并跟随以下步骤进行操作: 缩小窗口让上半部分出现滚动条 将指针悬停在上半部分 使用触控板进行滚动 在 Flutter 3.3 以前,使用触控板滚动会拖动元素,因为 Flutter...将模拟的手势事件进行了下发 从 Flutter 3.3 开始,使用触控板滚动会正确地滚动列表,因为 Flutter 会传递「滚动」事件,卡片不会识别这些事件,而列表会进行对应的处理 想了解更多信息,请访问...go_router package 由 Flutter 团队进行维护,通过声明式和基于 URL 的 API 让导航和 deep links 的处理变得更加轻松。...,还有在滚动事件的长列表时减少卡顿 (#4175。

    3.7K20

    【HarmonyOS NEXT星河版开发学习】小型测试案例12-点赞案例

    知识点概述 在鸿蒙开发中,交互点击事件是构建用户界面交互性的重要组成部分。这些事件允许应用对用户的输入做出响应,比如点击、长按或拖动手势等。...触屏事件 点击事件:当手指或手写笔在组件上完成一次完整的按下和抬起动作时,会触发点击事件。这种事件通常用于按钮、图片或其他可交互元素的简单交互,如执行命令或切换状态。...键鼠事件 鼠标事件:在支持鼠标或触控板的设备上,鼠标的点击、滚轮滚动、双击等动作都会触发相应的鼠标事件。这些事件可以用于实现更为复杂的指针交互逻辑,如右键菜单或拖拽操作。...手势事件 单一与组合手势:鸿蒙系统支持单一手势(如单击、轻触)和由多个单一手势组成的复杂手势(如缩放、旋转)。开发者可以为组件绑定特定的手势识别及响应方法。...长按手势:LongPressGesture用于识别长按动作,可以设置触发长按所需的最短时间和是否连续触发事件回调。

    18510

    JavaScript——触屏事件

    概述 移动端浏览器兼容性较好,我们不需要考虑以前js的兼容性问题,可以放心的使用原生js书写效果,但是移动端也有自己独特的地方。比如触屏事件touch(也称触摸事件),Android和IOS都有。...touch对象代表一个触摸点,触摸点可能是一个手指,也可能是一根触摸笔。 触屏事件可响应用户手指(或触控笔)对屏幕或者触控板操作。...常见的触屏事件如下: 触屏touch事件 说明 touchstart 手指触摸到一个DOM元素时触发 touchmove 手指在一个DOM元素上滑动时触发 touchend 手指从一个DOM元素上移开时触发...触摸事件对象 TouchEvent是一类描述手指在触摸平面(触摸屏、触摸板等)的状态变化事件。...touchend: 注意:手指移动也会触发滚动屏幕所以这里要阻止默认的屏幕滚动e.preventDefault(); <!

    2.8K10

    触屏事件

    1触屏事件 1.1. 触屏事件概述 移动端浏览器兼容性较好,我们不需要考虑以前 JS 的兼容性问题,可以放心的使用原生 JS 书写效果,但是移动端也有自己独特的地方。...比如触屏事件 touch(也称触摸事件),Android和 IOS 都有。 touch 对象代表一个触摸点。触摸点可能是一根手指,也可能是一根触摸笔。...触屏事件可响应用户手指(或触控笔)对屏幕或者触控板操作。 常见的触屏事件如下: 1.3.2....触摸事件对象(TouchEvent) TouchEvent 是一类描述手指在触摸平面(触摸屏、触摸板等)的状态变化的事件。...(2) 移动手指 touchmove: 计算手指的滑动距离,并且移动盒子 (3) 离开手指 touchend: 注意: 手指移动也会触发滚动屏幕所以这里要阻止默认的屏幕滚动 e.preventDefault

    1.4K20

    医疗数字阅片-医学影像-Lodash 是一个一致性、模块化、高性能的 JavaScript 实用工具库。_.throttle(func, , [option

    当我们给 DOM 绑定事件的时候,加了防抖和节流的函数变得特别有用。为什么呢?因为我们在事件和函数执行之间加了一个控制层。记住,我们是无法控制 DOM 事件触发频率的。...看下滚动事件的例子: 当使用触控板,滚动滚轮,或者拖拽滚动条的时候,一秒可以轻松触发30次事件。经我的测试,在智能手机上,慢慢滚动一下,一秒可以触发事件100次之多。...电梯延迟了改变楼层的功能,但是优化了资源。 在顶部按钮上点击或移动鼠标试一下: 你可以看到连续快速的事件是如何被一个 debounce 事件替代的。...但是如果事件触发的时间间隔过长,debounce 则不会生效。 前缘(或者“immediate”) 你会发现,直到事件停止快速执行以后,debounce 事件才会触发相应功能。为何不立即触发呢?...总之: debounce:把触发非常频繁的事件(比如按键)合并成一次执行。 throttle:保证每 X 毫秒恒定的执行次数,比如每200ms检查下滚动位置,并触发 CSS 动画。

    3.1K20

    让你的鼠标“滑如触控板”:Mac 必装神器 Mos 深度指南

    Mac 自带的触控板滚动体验一流,但当你插上一个外接鼠标时——尤其是普通滚轮鼠标——那“咔咔直跳”的滚动感就会让人抓狂。很多朋友甚至怀疑是不是鼠标坏了 。...其实,问题不在鼠标,而在操作系统对滚轮事件的处理方式。好消息是,有一个小工具能彻底改变这个体验,它就是 Mos ——一个轻量、免费的开源 macOS 工具,让鼠标滚动像触控板一样顺滑。...Mos 是一个专注于优化鼠标滚动体验的 macOS 工具:平滑滚动,让普通鼠标滚轮也能有触控板那样丝滑的感觉;支持单独设置鼠标 & 触控板的滚动方向;可以按应用配置不同的滚动行为;还能自定义滚动曲线、加速度等高级选项...设计、绘图等精细操作Mos 的按应用区分配置,让你在设计软件里保留稳健的滚动,在其他地方享受柔滑体验。 4. 外接鼠标的救星很多不是触控板用户的人,会因为鼠标滚动不顺而抱怨。...如果你:✔ 用外接鼠标✔ 需要更舒适的滚动体验✔ 想要更细腻的控制那么 Mos 几乎是 Mac 上最简单、最有效的优化工具之一。它不会占用太多资源、设置也不复杂,而且是免费的开源工具。

    4.3K10
    领券