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

【前端词典】4 种滚动吸顶实现方式的比较

目录 使用 position:sticky 实现 使用 JQuery 的 offset().top 实现 使用原生的 offsetTop 实现 使用 obj.getBoundingClientRect(...二、使用 JQuery 的 offset().top 实现 我们知道 JQuery 中封装了操作 DOM 和读取 DOM 计算属性的 API,基于 offset().top 这个 API 和 scrollTop...这样实现固然可以,不过由于 JQuery 慢慢的退出历史的舞台,我们在代码中尽量不使用 JQuery 的 API。我们可以基于 offset().top 的源码自己处理原生 offsetTop。...三、使用原生的 offsetTop 实现 我们知道 offsetTop 是相对定位父级的偏移量,倘若需要滚动吸顶的元素出现定位父级元素,那么 offsetTop 获取的就不是元素距离页面顶部的距离。...(保存变量); 在使用的时候可能出现 DOM 没有初始化,就读取了该属性,这个时候会返回 0;对于这个问题我们需要等到 DOM 元素初始化完成后再执行。

2.8K60

jQuery源码解析之offset()

一、offset() 作用: 返回被选元素相对于文档(document)的偏移坐标 二、三种情况使用: 1、$().offset() jQuery.js">top:value,left:value}) // 使用函数设置偏移坐标:$(selector).offset(function(index,currentoffset...,并返回一个对象,该对象中有top, right, bottom, left等属性,简单点就是相对于原坐标(默认是左上角)的偏移量 (2)window.pageXOffset、window.pageYOffset...返回文档在窗口左上角水平 x 和垂直 y 方向滚动的像素,相当于 scrollX 和 scrollY,简单点就是滚动的偏移量 所以offset()的本质即: 相对于原坐标的偏移量+滚动的偏移量的总和。...2、$().offset({top:15,left:15}) $("#pTwo").offset({top:15,left:15}) 源码: 当有参数的时候,就会走 if 中,通过jQuery.offset.setOffset

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

    【前端词典】4 (+1)种滚动吸顶实现方式的比较

    目录 使用 position:sticky 实现 使用 JQuery 的 offset().top 实现 使用原生的 offsetTop 实现 使用 obj.getBoundingClientRect(...二、使用 JQuery 的 offset().top 实现 我们知道 JQuery 中封装了操作 DOM 和读取 DOM 计算属性的 API,基于 offset().top 这个 API 和 scrollTop...这样实现固然可以,不过由于 JQuery 慢慢的退出历史的舞台,我们在代码中尽量不使用 JQuery 的 API。我们可以基于 offset().top 的源码自己处理原生 offsetTop。...(保存变量); 在使用的时候可能出现 DOM 没有初始化,就读取了该属性,这个时候会返回 0;对于这个问题我们需要等到 DOM 元素初始化完成后再执行。...不急,你是否还记得滚动吸顶使用了 offsetTop 或者 getBoundingClientRect().top 来获取响应的偏移量呢? 既然有读取元素的属性就自然会导致页面 reflow。

    2.4K30

    waypoint_使用jQuery Waypoint创建粘性导航标题

    最重要的是,您将熟悉jQuery Waypoints插件的基础知识,该插件将提供高级功能:当用户向下滚动时,导航栏将停留在视口的顶部,并进行更改以指示当前部分。...它的唯一目的是在用户滚动到某个元素时触发事件。 如您所见,它非常简单,但提供了很大的灵活性-您可以在其主页上查看几个示例 。 在页面中包含jQuery和Waypoint,让我们开始吧!...使用offset变量,这很容易:对于距顶部15像素的偏移量,请将offset:15px添加到.waypoint()的选项中,然后在.sticky CSS规则.sticky top:0px更改为top:15px...所有这些都是标准的jQuery票价:在nav添加或删除sticky类后,我们便会使用.css()覆盖元素的垂直位置,然后使用.animate()其设置为应有的水平。...由于我们没有离开渐进增强的轨道,因此没有理由不坚持使用jQuery的强大功能。 ---- 步骤6:突出显示和平滑滚动 随着读者逐步浏览页面的不同部分,您可能需要更改突出显示的项目。

    4.5K30

    WEB入门之十五 属性和样式

    " : 属性值 , ... ...} ) 6.2.2位置函数 offset函数用来获取或设置元素相对于浏览器窗口的位置对象,可以通过该对象的left和top属性获取到准确的位置坐标。...scorllLeft和scrollTop函数用来获取滚动条的偏移位置。下面我们使用这三个函数实现一个跟随滚动条滚动的图片,参考代码如下所示。...,通过简单计算即可实现跟随滚动条滚动的广告图片 如果需要通过offset函数设置元素的具体位置,可以参考上述代码中的最后一行,语法归结如下: jQuery元素 . offset ( { top : 值,...jQuery提供了support来检测浏览器的特性,它包含了一些子属性,详见表6-1-6所示。...leadingWhitespace 检测在使用innerHTML的时候浏览器是否会保持前导空白字符,目前在IE 6—8中返回false。

    35110

    WEB入门之十五 属性和样式

    " : 属性值 , ... ...} )6.2.2位置函数offset函数用来获取或设置元素相对于浏览器窗口的位置对象,可以通过该对象的left和top属性获取到准确的位置坐标。...scorllLeft和scrollTop函数用来获取滚动条的偏移位置。下面我们使用这三个函数实现一个跟随滚动条滚动的图片,参考代码如下所示。...,通过简单计算即可实现跟随滚动条滚动的广告图片 如果需要通过offset函数设置元素的具体位置,可以参考上述代码中的最后一行,语法归结如下: jQuery元素 . offset ( { top : 值,...jQuery提供了support来检测浏览器的特性,它包含了一些子属性,详见表6-1-6所示。...leadingWhitespace 检测在使用innerHTML的时候浏览器是否会保持前导空白字符,目前在IE 6—8中返回false。

    32210

    React项目中如何实现一个简单的锚点目录定位

    前言 锚点目录定位功能在长页面和文档类网站中非常常见,它可以让用户快速定位到页面中的某个章节 如何在React中实现锚点定位和平滑滚动 目录自动高亮的实现思路 处理顶部导航遮挡锚点的解决方案 服务端渲染下的实现方案...自动高亮 实现自动高亮也很简单,通过监听滚动事件,计算章节元素的偏移量,判断哪个章节在可视区域内,并更新active状态: function App() { const [activeChapter...性能优化 使用节流 滚动事件会高频触发,直接在滚动回调中计算章节位置会造成性能问题。...在使用了服务端渲染(SSR)的框架如Next.js等情况下,实现锚点定位和目录联动也会有一些不同。...: rect.top, behavior: 'smooth' }) } 无论哪种方法,都需要在组件挂载后获取元素的位置信息。

    1.9K20

    dynamic-css 动态 CSS 库,使得你可以借助 MVVM 模式动态生成和更新 css,从 js 事件和 css 选择器的苦海中脱离出来

    比如你要做元素跟随鼠标移动,或者根据滚动条位置的变化而触发一些效果,原本你要写 js 去绑定滚动事件,然后计算偏移量,然后更新元素 css,使用 dynamic-css,你只要根据语法去写好 css 表达式就可以了...你也可以自定义绑定的对象 */ top:{{layout.mouse.pageY}}px; left:{{layout.mouse.pageX}}px; } 的苦海,来到数据和绑定的乐园!欢迎使用和交流!...本文示例 Source Code: https://github.com/darklx/dynamic-css dynamic-css 使用了 jQuery,但并不是必须依赖 jQuery ,只是用了...jQuery 的 $.get 方法,如果你的项目不想引入 jQuery,也是可以的,传给 dynamic-css 具有相同 get 方法功能的对象即可。

    1.9K20

    图视觉模型崛起 | MobileViG同等精度比MobileNetv2快4倍,同等速度精度高4%!

    作者最快的模型MobileViG-Ti在ImageNet-1K上实现了75.7%的Top-1准确率,在iPhone 13 Mini NPU(使用CoreML编译)上实现了0.78 ms 的推理延迟,这比...图神经网络(GNN)已发展为在基于图的结构上运行,如生物网络、社交网络或引文网络。GNN甚至被提议用于节点分类、药物发现、欺诈检测等任务,以及最近提出的视觉GNN(ViG)的计算机视觉任务。...使用图1b中K=2的示例,通过向右滚动图像两次、向右滚动四次和向右滚动六次,可以将左上角像素与其行中的第二个像素对齐。除了向下滚动之外,可以对其列中的每一个像素执行相同的操作。...作者还在MRConv步骤中将滤波器组的数量从4(Vision GNN中使用的值)更改为1,以增加MRConv层的表达潜力,而不会显著增加延迟。更新后的Graper模块如图2d所示。...与DeiT类似,作者使用RegNetY-16GF进行知识蒸馏,Top-1准确率为82.9%。对于数据扩充,作者使用RandAugment、Mixup、Cutmix、随机擦除和重复扩充。

    67240

    98.HarmonyOS NEXT跑马灯组件教程:MarqueeSection组件实现原理

    MarqueeSection组件概述MarqueeSection组件是HarmonyOS NEXT跑马灯功能的核心实现,它负责处理文本的滚动动画、宽度检测和循环控制。...它通过以下机制实现跑马灯效果:检测文本宽度是否超出显示区域根据配置参数控制文本滚动方向、速度和循环次数使用动画API实现平滑滚动效果通过定时器控制滚动间隔1.2 组件结构@Componentexport...:条件判断:首先检查文本宽度是否超出滚动区域宽度,只有超出时才执行滚动动画动画配置:使用animateTo方法创建动画,设置持续时间、速度和动画曲线动画完成回调:在动画完成后,根据配置重置文本位置,处理循环次数...:滚动容器:使用Scroll组件作为容器,设置宽度、对齐方式和滚动行为文本内容:使用Row和Column组件布局文本内容,并通过marqueeTextBuilder构建具体文本宽度检测:通过onAreaChange...总结MarqueeSection组件是HarmonyOS NEXT中实现跑马灯效果的核心组件,它通过以下机制实现文本的自动滚动:使用onAreaChange事件检测文本宽度是否超出显示区域使用animateTo

    15600

    如何使用 SwiftUI 中 ScrollView 的滚动偏移

    使用 scrollPositionSwiftUI 框架已经允许我们通过视图标识符跟踪和设置滚动视图的位置。这种方法效果不错,但不足以更准确地跟踪用户交互。...为了弥补这一不足,SwiftUI 引入了新的 ScrollPosition 类型,使我们能够通过偏移量、滚动视图的边缘、视图标识符等组合滚动位置。...新的 ScrollPosition 类型SwiftUI 框架引入了新的 ScrollPosition 类型,使我们能够通过偏移量、滚动视图的边缘、视图标识符等组合滚动位置。...每当滚动视图滚动时,geometry?.contentBounds.origin 将提供当前滚动位置的偏移量。...我们介绍了如何使用 ScrollPosition 类型进行滚动位置的设置和读取,包括使用偏移量、视图标识符等方式进行操作。此外,我们还展示了如何通过动画和事件处理来增强用户体验。

    1.6K10

    移动端H5坑位指南

    该方案就是上述300ms延迟的主要原因,当用户执行第一次单击后会预留300ms检测用户是否继续执行单击,若是则执行缩放操作,若否则执行点击操作。...在前端领域里最早解决点击穿透是jQuery时代的zepto,估计现在大部分同学都未使用过zepto,其实它就是移动端版本的jquery。...弹窗打开后内部内容无法滚动 弹窗关闭后页面滚动位置丢失 Webview能上下滑动露出底色 当打开弹窗时给声明position:fixed;left:0;width:100%并动态声明top。...通过scrollingElement获取页面当前滚动条偏移量并将其取负值且赋值给top,那么在视觉上就无任何变化。...在输入框聚焦时获取页面当前滚动条偏移量,在输入框失焦时赋值页面之前获取的滚动条偏移量,这样就能间接还原页面滚动条偏移量解决页面高度坍塌。

    3.8K10

    页面滚动,元素跳动;附带jquery.scrollex.js插件

    使用了两种不同的实现方式(on-loading, is-inactive)。 1....页面加载时的动画效果: 1) 页面加载完成后,给body元素添加class: on-loading, 需要实现动画的元素在body.on-loading 状态下显示为:opacity:0(需要显示出来的元素...滚动到要实现动画的元素时(is-inactive): 其实和上面的意思一样: 在未滚动到该元素时,显示假位置。...当滚动到该元素时,去掉class:is-inactive 而监听滚动事件和判断是否去掉class:is-inactive 使用的是jquery.scrollwx.js插件 二、使用方法 要使用这个...middle 顶部或底部视口边缘在元素的中间。 top和bottom 通过top和bottom参数可以移动元素和视口的接触面积,可以使用像素值,百分比值,或视口的百分比值(如20vh)。

    6.5K10

    页面返回顶部代码_网页回到顶部代码

    这几句代码意思很简单,就是定义了三角号的外观样式,同时制定了颜色变化,这是为了用户体验。最下面的 margin-top:4px,则是用来准确定位三角号,让它居中显示。...jQuery 代码 具体的 jQuery 代码如下,解析已经写在注释里面了: $(function(){ $(window).scroll(function(){ //只要窗口滚动,就触发下面代码...var scrollt = document.documentElement.scrollTop + document.body.scrollTop; //获取滚动后的高度 if( scrollt...>200 ){ //判断滚动后高度超过200px,就显示 $(“#回到顶部”).fadeIn(400); //淡出 }else{ $(“#回到顶部”).stop().fadeOut...如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

    3.8K40

    用最少的代码却实现了最牛逼的滚动动画!

    大家好,我是前端实验室的小师妹! 今天小师妹带领大家学习如何使用最少的代码创建令人叹为观止的滚动动画~ 在聊ScrollTrigger插件之前我们先简单了解下GSAP。...插件简介 ScrollTrigger是基于GSAP实现的一款高性能页面滚动触发HTML元素动画的插件。 通过ScrollTrigger使用最少的代码创建令人叹为观止的滚动动画。...丰富的回调系统。 当窗口调整大小时,自动重新计算位置。 在开发过程中启用视觉标记,以准确查看开始/结束/触发点的位置。...在滚动记录器处于活动状态时,如将active类添加到触发元素中:toggleClass: "active" 使用 matchMedia() 标准媒体查询为各种屏幕尺寸创建不同的设置。...top", // 当触发器的顶部碰到视口的顶部时 end: "+=500", // 在滚动 500 px后结束 scrub: 1, // 触发器1秒后跟上滚动条 snap

    3.3K20

    用最少的代码却实现了最牛逼的滚动动画!

    gzh:老鱼的储物柜今天老鱼带领大家学习如何使用最少的代码创建令人叹为观止的滚动动画~图片在聊ScrollTrigger插件之前我们先简单了解下GSAP。...插件简介ScrollTrigger是基于GSAP实现的一款高性能页面滚动触发HTML元素动画的插件。通过ScrollTrigger使用最少的代码创建令人叹为观止的滚动动画。...丰富的回调系统。当窗口调整大小时,自动重新计算位置。在开发过程中启用视觉标记,以准确查看开始/结束/触发点的位置。...在滚动记录器处于活动状态时,如将active类添加到触发元素中:toggleClass: "active"使用 matchMedia() 标准媒体查询为各种屏幕尺寸创建不同的设置。...top", // 当触发器的顶部碰到视口的顶部时 end: "+=500", // 在滚动 500 px后结束 scrub: 1, // 触发器1秒后跟上滚动条 snap

    3.5K00

    JS中clientHeight、scrollHeight和offsetHeight的大坑,滚动条抖动问题解决

    下面给出我的结论: clientHeight = (content height) + (padding top+padding bottom); 翻译成中文就是 clientHeight = 内容实际高度...:none的元素进行渲染,所以使用时一定要注意这一点....(这一点有别于我接下来要说的scrollHeight) 1.4 scrollHeight和它的大坑 scrollHeight有的人翻译成可滚动内容的高度,这个翻译还是比较准确的,但是网上大部分人都没有讲清楚...什么意思呢,让我们来看一个例子: 可以看到,在用scrollHeight获取可滚动内容的高度时有这么一个坑,那就是当你不希望定位的后代元素被计算入滚动总高度的时候,使用scrollHeight...解决办法: 1.如果是自己封装的滚动条组件,则不要使用scrollHeight获取内容高度,改用非定位子元素的offsetHeight累加来计算得出内容高度; 2.如果是采用默认的浏览器滚动条如overflow

    6.8K10
    领券