首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如果目标元素不存在,是否也会触发滚动事件?

如果目标元素不存在,不会触发滚动事件。滚动事件是在用户滚动页面时触发的,它与页面中的具体元素相关。当页面中的元素具有滚动条,并且用户滚动该元素时,才会触发滚动事件。如果目标元素不存在或者没有滚动条,那么滚动事件就不会被触发。

滚动事件在前端开发中常用于实现一些与滚动相关的交互效果,比如无限滚动加载、懒加载等。在应用场景上,滚动事件可以用于监听用户对页面内容的滚动行为,从而实现一些动态效果或者响应式的交互。

腾讯云提供了丰富的云计算产品和服务,其中与前端开发和滚动事件相关的产品包括:

  1. 腾讯云对象存储(COS):提供了高可靠、低成本的云存储服务,可以用于存储和管理前端开发中的静态资源文件,如图片、音视频等。链接地址:https://cloud.tencent.com/product/cos
  2. 腾讯云内容分发网络(CDN):通过在全球部署的加速节点,提供快速、稳定的内容分发服务,可以加速前端资源的加载速度,提升用户体验。链接地址:https://cloud.tencent.com/product/cdn
  3. 腾讯云云函数(SCF):无服务器计算服务,可以帮助开发者在云端运行代码,实现前端开发中的一些逻辑处理,如滚动事件的监听和处理。链接地址:https://cloud.tencent.com/product/scf

以上是腾讯云提供的一些与前端开发和滚动事件相关的产品,开发者可以根据具体需求选择适合的产品来支持自己的应用。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

从 antDesign 来窥探移动端“滚动穿透”行为

比如上方图片中有两个元素,一个为红色边框存在滚动条的父元素,另一个则为蓝色边框黑色背景不存在滚动条的子元素。 当我们拖动不可滚动的子元素时,实际会意外造成父元素跟随滚动。...解决思路 通过上边的描述我们已经了解了”滚动穿透“的原理:绝大多数浏览器厂商对于滚动如果目标节点不能滚动则会尝试触发祖先节点的滚动,就比如上述第一种现象。...在移动端,我们完全可以使用一种通用的解决方案来解决上述造成“滚动穿透”意外行为: 无论元素是否可以滚动时,每次元素的拖拽事件触发时我们只需要进行判断: 寻找当前触发 touchMove 事件 event.target...如果在上述的范围内,祖先元素不存在滚动元素,表示整个区域实际上是不可滚动的。那么不需要触发任何父元素的意外滚动行为,直接进行 event.preventDefault() 阻止默认。...完成上述的判断后,如果 status === 11 表示当前元素滚动并且滚动条不在顶部不在底部(即在中间),表示 touchMove 事件不应该阻止元素滚动(当前滚动为正常现象) // 2

53320

HTML事件属性--DOM

return "提示" //返回的内容不会显示, //在刷新的时候触发,或者关闭浏览器,浏览直接提示是否重新加载,不能直接返回return } </script...和onoffline在网络断线或者连线时触发,可以控制电脑网络查看效果 9.onpagehide 当用户从网页离开时触发可以理解成当窗口隐藏时运行的脚本 刷新页面可以触发事件 demo查看 10.onpageshow...7.oninvalid oninvalid事件要搭配required属性来使用 required如果使用该属性,代表必填字段,oninvalid是当元素无效时触发事件 <input.../在拖动操作末端运行的脚本 ondragenter/当元素元素已被拖动到有效拖放区域时运行的脚本 ondragleave/当元素离开有效拖放目标时运行的脚本 ondragover/当元素在有效拖放目标上正在被拖动时运行的脚本...,可以绑定到body上 demo查看 9.onscroll 当元素滚动条被滚动触发事件 In my younger and more vulnerable

3.8K20
  • 大白话详解Intersection Observer API

    然而事件监听和调用Element.getBoundingClientRect()等 API 都是运行在主线程,因此频繁触发、调用造成性能问题,而且这种检测方法使用起来比较繁琐。...)元素 --- 帮助我们判断目标元素是否符合条件的元素 以下两种情况根元素默认为顶级文档的视口(一般为 html)。...如果指定为 null,为浏览器视口。 必须是目标元素的父级元素。 rootMargin --- 根元素的扩缩边距。...该对象按照设定的阈值来监听目标元素。 调用自身的observe()方法开始对目标元素进行监听。...,getBoundingClientRect()方法的返回值,如果没有根元素(即直接相对于视口滚动),则返回 null intersectionRect 返回目标元素与视口(或根元素)的交叉区域的信息

    27710

    一文彻底搞懂js中的位置计算

    scrollHeight包括 ::before 和 ::after这样的伪元素。 换句话说Element.scrollHeight在元素不存在滚动条的情况下是恒等于clientHeight的。...简单来说一个元素如果不存在滚动条,那么他们的scroll和client都是相等的值。...在实际工作中如果对于滚动操作有很频繁的需求,个人建议去使用better-scroll,它是一个移动/web端的通用js滚动库,内部是基于元素transform去操作的滚动并不会触发相关重塑/回流。...例如,不论页面是否有垂直/水平滚动,当你点击客户端区域的左上角时,鼠标事件的 clientX/Y 值都将为 0 。...注意是触发元素也就是 e.target,额外小心如果事件对象中存在从一个子元素当移动到子元素内部时,e.offsetX/Y 此时相对于子元素的左上角偏移量。

    3.8K10

    IntersectionObserver交叉观察器

    交叉观察器 IntersectionObserver 可以观察元素是否可见,由于目标元素与视口产生一个交叉区,我们可以观察到目标元素的可见区域,通常称这个API为交叉观察器 前段时间内部系统业务需要,...在传统上,我们实现上拉加载,我们监听滚动条到底部的距离,我们计算滚动条距离顶部位置、浏览器可视区域的高度、body的高度,监听滚动事件,判断scrollTop + clientHeight > bodyScrollHeight...监听滚动事件,我们会加防抖处理事件,即使这样scroll事件高频触发,这样影响性能。 因此我们使用IntersectionObserver这个API实现上拉加载。...new IntersectionObserver()这个是异步的,并不会随着页面的滚动而时时触发,它只会在线程空闲下来才会执行,因此它在事件循环中,优先级很低,只有等其他任务执行完了,浏览器有了空闲才会执行它...当目标元素可见时,触发callback,另一次是当元素完全不可见时触发该callback const options = {}; var observer = new IntersectionObserver

    92020

    Interection Observer如何观察变化

    这些值与目标的交叉比例有关,稍后将对其进行说明。阈值为0时,目标元素的第一个像素与根元素相交就会触发交集改变事件。阈值为1时,整个目标元素都在根元素内部时才会触发交集改变事件。...通过这种方式,你可以跟踪观看者遇到特定目标所花费的时间。即使稍后将目标再次滚动到视图中,此属性提供新的时间。这可用于跟踪目标进入和离开根元素的时间。...实际上,检查根元素的“顶部”可以解决此问题。从逻辑上讲,如果目标不在顶部,则它必须在底部。如果比率恰好等于1,则它在根元素“内部”。...可以说,即使目标元素碰触到零像素区域,触发相交变化,即使它不存在于数字中也是如此。考虑一下,我们可以在DOM中具有折叠高度为零的元素。...Chrome似乎没有保留使用CSS转换过的目标元素的标签。但是,如果我们在目标元素移入和移出根元素时在浏览器中四处移动鼠标,则intersectionRatio确实更新。

    2.6K20

    窥探现代浏览器架构(四)

    如果当前页面不存在任何用户事件的监听器(event listener),合成线程完全不需要主线程的参与就能创建一个新的合成帧来响应事件。...可是如果页面有一些事件监听器(event listeners)呢?合成线程是如何判断出这个事件是否需要路由给主线程处理的呢?...由于事件冒泡,你可以给顶层的元素绑定一个事件监听函数来作为其所有子元素事件委托者,这样子节点的事件就可以统一被顶层的元素处理了。...这个选项告诉浏览器您仍要在主线程中侦听事件,可是合成线程可以继续合成新的帧。...如果每秒将诸如 touchmove这种连续被触发事件发送到主线程120次,因为屏幕的刷新速度相对来说比较慢,它可能触发过量的点击测试以及JavaScript代码的执行。

    49330

    每天10个前端小知识 【Day 3】

    由于 mouseenter 不支持事件冒泡,导致在一个元素的子元素上进入或离开的时候触发其 mouseover 和 mouseout 事件,但是却不会触发 mouseenter 和 mouseleave...clientWidth/clientHeight 返回的是元素的内部宽度,它的值只包含 content + padding,如果滚动条,不包含滚动条。 clientTop 返回的是上边框的宽度。...event.stopPropagation()方法:这是阻止事件的冒泡方法,不让事件向 document 上蔓延,但是默认事件任然执行,当你掉用这个方法的时候,如果点击一个连接,这个连接仍然会被打开。...return false: 这个方法比较暴力,他会同事阻止事件冒泡阻止默认事件;写上此代码,连接不会被打开,事件不会传递到上一层的父元素;可以理解为return false就等于同时调用了event.stopPropagation...捕获阶段:从window对象传导到目标节点(上层传到底层)称为“捕获阶段”(capture phase),捕获阶段不会响应任何事件目标阶段:在目标节点上触发,称为“目标阶段” 冒泡阶段:从目标节点传导回

    13310

    如何实现一个丝滑的点击水波效果

    比如touch事件或scroll事件的默认行为都会触发页面的滚动如果调用了preventDefault方法,那么就会阻止滚动,但问题是浏览器并不知道我们有没有在事件处理函数中调这个方法,那么就必须等待函数执行完毕才知道...的task方法等待60ms再执行;如果我们是在60ms后才松开手指,那么_ripple.tasker不存在立即执行removeRipple的task方法,该方法内获取最后一个水波元素,也就是刚刚创建的水波元素...如果在60ms后再次触摸元素,执行removeRipple时_ripple.tasker不存在立即执行task方法,同样,这个task任务和松开手指触发的task任务重复。...更多次重复触摸元素时以此类推,不断创建水波,水波动画结束后不断被删除。...到这里,水波效果的创建和移除就都介绍完了,可以看到这种实现方式对目标元素还是有一定要求的,如果目标元素的样式布局需要设置position、overflow、z-index属性为不符合要求的值,那么直接修改可能就会导致样式出现问题

    59920

    IntersectionObserver API 使用教程

    传统的实现方法是,监听到scroll事件后,调用目标元素(绿色方块)的getBoundingClientRect()方法,得到它对应于视口左上角的坐标,再判断是否在视口之内。...callback一般触发两次。一次是目标元素刚刚进入视口(开始可见),另一次是完全离开视口(开始不可见)。...比如,[0, 0.25, 0.5, 0.75, 1]就表示当目标元素 0%、25%、50%、75%、100% 可见时,触发回调函数。...容器内滚动影响目标元素的可见性,参见本文开始时的那张示意图。 IntersectionObserver API 支持容器内滚动。root属性指定目标元素所在的容器节点(即根元素)。...这样设置以后,不管是窗口滚动或者容器内滚动,只要目标元素可见性变化,都会触发观察器。 七、注意点 IntersectionObserver API 是异步的,不随着目标元素滚动同步触发

    1.9K60

    移动端的touch事件处理

    下面具体说明:  touchstart事件:当手指触摸屏幕时候触发,即使已经有一个手指放在屏幕上触发。  touchmove事件:当手指在屏幕上滑动的时候连续地触发。...而item方法,跟我们在NodeList,HTMLCollection对象中的一样吧,获取第n个对象,只是我们大多数仍然喜欢使用数组的方式进行操作吧。...click 穿透假设有个弹出层,上面有个关闭的按钮支持 touchend 触发后关闭,若正好下方有个元素支持 click 事件,在弹出层关闭后将会在下方元素触发 click 事件。...使用原生的滚动事件Android 4.0 以下是不支持原生的 webview 滚动的,所以只能使用 iscroll 之类的工具来模拟元素滚动。...启用原生滚动只需要给外层元素加上样式 -webkit-overflow-scrolling: touch; 即可,如果你的监听函数比较占用资源我们可以通过一个简单的 buffer 函数来限制它的触发间隔

    1.7K20

    一文帮你搞定H5、小程序、Taro长列表曝光埋点

    言归正传,对于各种类型的埋点来说,曝光埋点往往最为复杂、需要用到的技术最全面、如果实现方式不合理可能造成的影响最大,因此本文将重点介绍曝光埋点尤其是长列表(或滚动视图)内元素曝光埋点的实现思路及避坑技巧...缺点: 计算量大,性能损耗严重:这种计算方式需要监听滚动视图的滚动事件,在滚动回调事件内实时进行列表内所有元素的位置坐标计算(获取所有元素的位置并同当前可见区域进行对比),这样带来的计算量是相当大的,往往造成页面的性能问题...)才会触发回调;如果是一组数值的话,相交比例达到其中任意值时都会触发回调(备注:除此外,元素首次添加观察时触发一次回调,不论是否达到阈值)。...第三步:开启观察 通过前两步创建好观察者,设置好相关参数(触发阈值、是否目标等)并指定参照区域后,就可以对目标元素进行观察了。...回调方法内如何获取目标元素的其他信息? 如果创建及设置正确,随着列表的滑动或其他元素的位置变化,对应的回调方法应该会被触发,在回调方法内需要接收回调的入参数并进行处理(例如上报相关业务信息)。

    1.1K21

    JavaScript的事件

    目前都支持事件捕获,但是由于老版本的浏览器不支持事件捕获,因此很少有人使用事件捕获。...DOM中的事件对象 在触发DOM上的某个事件时,产生一个事件对象event,这个对象包含着所有与事件相关的信息,包括导致事件元素事件的类型以及其他与特定事件相关的信息。...如果直接将事件处理程序指定给了目标元素,this,currentTarget,target包含相同的值。 2....>)中的一个或多个字符时 resize 当浏览器窗口被调整到一个新的高度或者宽度时,触发 scroll 当用户滚动滚动条的元素中的内容时,在该元素触发resize,scroll会在变化期间重复被激发...键盘与文本事件 keydown 按下键盘任意键时触发如果按住不放重复触发事件 keypress 按下键盘字符键时触发如果按住不放重复触发事件 keyup 释放键盘上键时触发 当键盘事件发生时

    1.5K30

    JS中的touch事件与canvas绘图

    不管有多少个手指放在了屏幕上,只要再触摸一下屏幕就会触发 touchmove:当手指在屏幕上滑动的时候触发该是事件,在这期间可以通过event.preventDefault()来阻止滚动 touchend...因此, 如果元素在触摸过程中可能被移除, 最佳实践是将触摸事件的监听器绑定到这个元素本身, 防止元素被移除后, 无法再从它的上一级元素上侦测到从该元素冒泡的事件....offsetX 返回鼠标指针相对于目标元素边缘位置的水平坐标 offsetY 返回鼠标指针相对于目标元素边缘位置的垂直坐标 movementX 返回鼠标指针相对于上一个mousemove事件位置的水平坐标...movementY 返回鼠标指针相对于上一个mousemove事件位置的垂直坐标 target 返回与触发鼠标事件元素相关的元素 which 返回触发鼠标事件时按下的鼠标按钮 altKey 返回触发鼠标事件是否按下...ALT键 ctrlKey 返回触发鼠标事件是否按下CTRL键 shiftKey 返回触发事件是否按下SHIFT键 metaKey 返回触发事件是否按下META键 和Touch对象相比screenX

    7.5K41

    接上一篇事件详解

    mouseenter事件:在鼠标光标从元素外部移动到元素范围之内被触发;这个事件不冒泡; mousemove事件:当鼠标指针在元素内部移动时重复地触发。...,在垂直方向上滚动页面时(无论向上还是向下),就会触发mousewheel事件,这个事件可以在任何元素触发,最终会冒泡到document(IE8)或window(IE9,Opera,Chrome,Safari...,也是在鼠标滚轮滚动触发,与mousewheel事件一样,但是他的有关鼠标滚轮信息保存在detail属性中,当鼠标向前滚动时,这个属性值是-3的倍数,当鼠标滚轮向后滚动时,这个属性值是3的倍数;可以给...120,向下滚动是负数-120,所以根据是否大于0,可以判断是向下滚动还是向上滚动; HTML5事件 1....,即使是一个手指放在屏幕上触发

    1.9K60

    BetterScroll源码阅读顺便学习TypeScript

    true监听即将滚动事件来将当前页面上激活的元素(input、textarea)失去焦点,document.activeElement可以获取文档中当前获得焦点的元素。...,首先肯定要先获取一些基本信息,例如wrapper和content元素的尺寸信息,然后监听事件,比如触摸事件,然后判断是否需要滚动,怎么滚动,最后进行滚动,根据这个思路我们来挨个看一下。...let pX = this.pointX - scrollLeft let pY = this.pointY - scrollTop // 如果你快速滑动幅度过大的时候可能手指滑出屏幕导致没有触发...,其实这样就可以结束了,但是呢,还有两件事要做,一是一般如果我们滑动一个东西,滑动较快的时候,即使手松开了物体还会继续滚动,不会你一松开它也立马停下来,所以要判断是否是快速滑动以及如何进行这个松开后的动量动画...transform值 this.translate(endPoint) // 如果时间不存在,那么在一个事件周期里里改变属性值不会触发transitionend事件,所以这里通过触发回流强制更新

    61220

    网页元素相交监测:Intersection Observer API

    过去,要检测一个元素是否可见或者两个元素是否相交并不容易,很多解决办法不可靠或性能很差。...事件监听和调用 Element.getBoundingClientRect() 都是在主线程上运行,因此频繁触发、调用可能造成性能问题。这种检测方法极其怪异且不优雅。...Intersection Observer API 注册一个回调函数,每当被监视的元素进入或者退出另外一个元素时 (或者 viewport ),或者两个元素的相交部分大小发生变化时,该回调方法会被触发执行...Observer 第一次监听目标元素的时候 通常,您需要关注文档最接近的可滚动祖先元素的交集更改,如果元素不是可滚动元素的后代,则默认为设备视窗。...如果有指定 root 参数,则 rootMargin 可以使用百分比来取值。

    89820

    精通 Intersection Observer API

    滚动可以触发图片懒加载或延迟请求数据、初始化动画、支持无尽内容的加载,如此等等。糟糕的是这些 scroll 事件都不太可靠,都是资源消耗大户。这在实现效果方面引起了问题,常常让浏览器不堪重负。...考虑一个当下典型的站点页面,有很多 scroll 事件在发生 -- 广告模块、从底部滚动进来的新内容、时不时需要运行动画的元素,或是页面中的很多图片,都会滚动至被用户看到后才会加载或执行。...目标可能是任意合法的元素,当任何一个目标和根元素发生交集时,观察者触发一个回调函数。 ? 基本用法 建立一个简单的 IntersectionObserver 非常方便。...如果希望在多个点触发回调,可以传入一个值的数组,如 [0.33, 0.66, 1.0]。...向下滚动,一系列元素会出现。用一个 IntersectionObserver 实例监视 3 个目标元素。当它们完全进入视口(root)后,向目标元素上附加一个样式类名,触发对应的 CSS 动画。

    1.3K10

    win10 uwp 如何判断一个控件在滚动条的里面是用户可见

    在 UWP 中如何知道一个元素是在滚动条的显示大小内用户可以看到这个控件?如果需要在控件在滚动条里面用户可以看到的时候触发某个事件,在用户看不到的时候触发另一个事件可以怎么做?...昨天星期八再娶你 大佬问我如何判断在滚动条内可以看到某个元素,他需要在滚动条里面放一个视频播放器,在用户看不到这个播放器的时候自动停下这个播放器 在 UWP 的判断会比在 WPF 中复杂一些,我写过WPF...事件,但是这个事件和 WPF 的触发不相同的在于,如果我有外层的控件修改了滚动条的大小,不会触发这个事件。...,所以通过这个事件判断控件是否滚动条可见是不可靠的 昨天星期八再娶你 大佬告诉我一个可以使用的方法是通过LayoutUpdated 事件拿到触发,在布局属性修改的时候、在窗口修改的时候在运行时的布局的时候都会触发这个事件...在LayoutUpdated可以在控件第一次加载的时候触发,可以在用户滚动的时候触发 在 LayoutUpdated 通过判断控件的左上角坐标和控件的大小可以判断用户是否可以看到这个控件 在 UWP

    93020

    JavaScript(进阶)

    (Bubble) 事件的冒泡指的是事件向上传导,当后代元素上的事件触发时,将会导致其祖先元素上的同类事件触发。...,这样当后代元素上的事件触发时,一直冒泡到祖先元素,从而通过祖先元素的响应函数来处理事件。...的形式绑定响应函数,它只能同时为一个元素的一个事件绑定一个响应函数,不能绑定多个,如果绑定了多个,则后边覆盖掉前边的 addEventListener() 通过这个方法可以为元素绑定响应函数 参数...,向目标元素进行事件的捕获,但是默认此时不会触发事件 目标阶段 事件捕获到目标元素,捕获结束开始在目标元素触发事件 冒泡阶段 事件目标元素向他的祖先元素传递,依次触发祖先元素上的事件 如果希望在捕获阶段就触发事件...onkeydown——按键被按下 对于onkeydown来说如果一直按着某个按键不松手,则事件一直触发 当onkeydown连续触发时,第一次和第二次之间间隔稍微长一点,其他的非常的快 这种设计是为了防止误操作的发生

    1.5K20
    领券