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

Bootstrap滚动监听不用offset实现向下偏移

Bootstrap的滚动监听还不错,可以监听滚动事件,实现导航栏的.active切换。...Bootstrap滚动监听中文文档:http://v3.bootcss.com/javascript/#scrollspy 我就不在此赘述了。...但是我发现一个问题,如果把 nav 用 .navbar-fixed-top 顶部固定,给 body 一个 padding-top: 50px,锚点设置在“微信”和“支付宝”上面,点击或者滚动滑轮,锚点还是以浏览器顶部为准...名称:offset    类型:number    默认值:10    描述:计算滚动位置时相对于顶部的偏移量(像素数) 查了一些资料,也没找到简单的解决方法,应该是使用 offset 需要配合给监控元素设置...声明:本文由w3h5原创,转载请注明出处:《Bootstrap滚动监听不用offset实现向下偏移》 https://www.w3h5.com/post/29.html

1.9K00
您找到你想要的搜索结果了吗?
是的
没有找到

90行代码,15个元素实现无限滚动

无限下拉加载技术使用户在大量成块的内容面前一直滚动查看。这种方法是在你向下滚动的时候不断加载新内容。 当你使用滚动作为发现数据的主要方法时,它可能使你的用户在网页上停留更长时间并提升用户参与度。...采用relative/absolute 定位来确定滚动位置 追踪两个ref: top/bottom来决定向上/向下滚动的渲染与否 切割数据列表,保留最多15个DOM元素。...dom元素,但由于我们是固定15个dom元素渲染,需要判断向上向下滚动。...: maxStartIndex; // 在上一轮的基础上计算头部 setStart(newStart) setEnd(newEnd) } // 向上滚动...end - 10 : THRESHOLD); // 向上滚动尾部元素索引不得小于15 let newStart = start === 0 ?

2.9K20

面试官问:如何判断一个元素是否在可视区域?

该属性包括内边距 padding,但不包括边框 border、外边距 margin 和水平滚动条(如果有的话)。...接下来我们先来看看它的用法: 3.1 API var io = new IntersectionObserver(callback, option); 上面代码中,IntersectionObserver...root 属性,rootMargin 属性 很多时候,目标元素不仅会随着窗口滚动,还会在容器里面滚动(比如在iframe窗口里滚动)。容器内滚动也会影响目标元素的可见性。...IntersectionObserver API 支持容器内滚动。root 属性指定目标元素所在的容器节点(即根元素)。注意,容器元素必须是目标元素的祖先节点。...应用场景 「图片的懒加载」 有时,我们希望某些静态资源(比如图片),只有用户向下滚动,它们进入视口时才加载,这样可以节省带宽,提高网页性能。

2.6K21

IntersectionObserver API 使用教程

四、实例:惰性加载(lazy load) 有时,我们希望某些静态资源(比如图片),只有用户向下滚动,它们进入视口时才加载,这样可以节省带宽,提高网页性能。这就叫做"惰性加载"。...五、实例:无限滚动 无限滚动(infinite scroll)的实现也很简单。...6.2 root 属性,rootMargin 属性 很多时候,目标元素不仅会随着窗口滚动,还会在容器里面滚动(比如在iframe窗口里滚动)。...容器内滚动也会影响目标元素的可见性,参见本文开始时的那张示意图。 IntersectionObserver API 支持容器内滚动。root属性指定目标元素所在的容器节点(即根元素)。...这样设置以后,不管是窗口滚动或者容器内滚动,只要目标元素可见性变化,都会触发观察器。 七、注意点 IntersectionObserver API 是异步的,不随着目标元素的滚动同步触发。

1.8K60

【JS】322- 手把手教你实现前端惰性加载

el) { var source = el.dataset.src; el.src = source; } checkImgs(); 可以看出,页面加载时候,绑定外框的scroll事件,随着用户向下滚动鼠标...这里应该是有一些可以优化的地方,比如1、可以只监听向下滚动时候的事件,并设置延时(使用截流函数),防制多次调用回调函数。...这种条件下,假设 bound=el.getBoundingClientRect(),随着滚动条的向下滚动,bound.top会越来越小,也就是图片到可视区域顶部的距离越来越小,当 bound.top==...它的用法也很简单,类似于rxjs中的observe: var observe = new IntersectionObserver(callback, option); IntersectionObserver...下面是实现方法: var intersectionObserver = new IntersectionObserver( function (entries) { // 如果不可见,就返回

94530

手把手教你实现前端惰性加载

loadImg(el) {  var source = el.dataset.src;  el.src = source;}checkImgs(); 可以看出,页面加载时候,绑定外框的scroll事件,随着用户向下滚动鼠标...这里应该是有一些可以优化的地方,比如 1、可以只监听向下滚动时候的事件,并设置延时(使用截流函数),防制多次调用回调函数。...这种条件下,假设 bound=el.getBoundingClientRect(),随着滚动条的向下滚动,bound.top会越来越小,也就是图片到可视区域顶部的距离越来越小,当 bound.top==...交叉观察器: IntersectionObserver 就是为此而生的,它是HTML5新增的api,可以检测一个元素是否可见, IntersectionObserver能让你知道一个被观测的元素什么时候进入或离开浏览器的视口...下面是实现方法: var intersectionObserver = new IntersectionObserver(  function (entries) {    // 如果不可见,就返回

91210

前端-原生JS实现最简单的图片懒加载

随着滚动条的向下滚动, bound.top会越来越小,也就是图片到可视区域顶部的距离越来越小,当 bound.top===clientHeight时,图片的上沿应该是位于可视区域下沿的位置的临界点,再滚动一点点...{  const bound = el.getBoundingClientRect();  const clientHeight = window.innerHeight;  //如果只考虑向下滚动加载...函数节流 在类似于滚动滚动等频繁的DOM操作时,总会提到“函数节流、函数去抖”。 所谓的函数节流,也就是让一个函数不要执行的太频繁,减少一些过快的调用来节流。...第一张图片是完整的呈现了,第二张图片刚进入可视区域,后面的就看不到了~ 页面滚动时 当我向下滚动,此时浏览器是这样 ? 此时第二张图片完全显示了,而第三张图片显示了一点点,这时候我们看看请求情况 ?...Intersection Observers: https://github.com/WICG/IntersectionObserver IntersectionObserver可以自动观察元素是否在视口内

5K30

原生 JS 实现最简单的图片懒加载

随着滚动条的向下滚动, bound.top会越来越小,也就是图片到可视区域顶部的距离越来越小,当 bound.top===clientHeight时,图片的上沿应该是位于可视区域下沿的位置的临界点,再滚动一点点...(el) { const bound = el.getBoundingClientRect(); const clientHeight = window.innerHeight; //如果只考虑向下滚动加载...函数节流 在类似于滚动滚动等频繁的DOM操作时,总会提到“函数节流、函数去抖”。 所谓的函数节流,也就是让一个函数不要执行的太频繁,减少一些过快的调用来节流。...实验 页面打开时 可以看出此时仅仅是加载了img1和img2,其它的img都没发送请求,看看此时的浏览器 第一张图片是完整的呈现了,第二张图片刚进入可视区域,后面的就看不到了~ 页面滚动时 当我向下滚动...Intersection Observers: https://github.com/WICG/IntersectionObserver IntersectionObserver可以自动观察元素是否在视口内

2.9K20

实现一个Vue自定义指令懒加载

什么是图片懒加载 当我们向下滚动的时候图片资源才被请求到,这也就是我们本次要实现的效果,进入页面的时候,只请求可视区域的图片资源这也就是懒加载。...这个功能非常常见,你打开淘宝的首页,向下滚动,就会看到会有图片不断的加载;你在百度中搜索图片,结果肯定成千上万条,不可能所有的都一下子加载出来的,很重要的原因就是会有性能问题。...你可以在Network中查看,在页面滚动的时候,会看到图片一张张加载出来。 ? lazyLoad 为什么要做图片懒加载 懒加载是一种网页性能优化的方式,它能极大的提升用户体验。...var observer = new IntersectionObserver(callback, options); IntersectionObserver是浏览器原生提供的构造函数,接受两个参数...inserted: 被绑定元素插入父节点时调用 (仅保证父节点存在,但不一定已被插入文档中)。 update: 所在组件的 VNode 更新时调用,但是可能发生在其子 VNode 更新之前。

94730

「实用推荐」如何优雅的判断元素是否进入当前视区

背景 在上篇文章:记一次 「 无限列表 」滚动优化 中, 我介绍了「 如何优化一个无限滚动列表 」。 用到了懒加载方案, 一个关键点是:需要判断元素是否在当前视区。 我们今天就看看这个问题。...使用 IntersectionObserver 也非常简单, 两步走: 创建 IntersectionObserver const observer = new IntersectionObserver...threshold: [0], }); 有一点要注意:IntersectionObserver 不是完美精确到像素级别,也不是低延时性的。 使用它实现类似依赖滚动效果的动画注定会失败。...实例:懒加载(lazy load) 有时,我们希望某些静态资源(比如图片),只有用户向下滚动,它们进入视口时才加载,这样可以节省带宽,提高网页性能。这就叫做"惰性加载"。...实例:无限滚动 无限滚动(infinite scroll)的实现也很简单: const intersectionObserver = new IntersectionObserver( function

1.3K20

精通 Intersection Observer API

滚动可以触发图片懒加载或延迟请求数据、初始化动画、支持无尽内容的加载,如此等等。糟糕的是这些 scroll 事件都不太可靠,也都是资源消耗大户。这在实现效果方面引起了问题,也常常让浏览器不堪重负。...考虑一个当下典型的站点页面,有很多 scroll 事件在发生 -- 广告模块、从底部滚动进来的新内容、时不时需要运行动画的元素,或是页面中的很多图片,都会滚动至被用户看到后才会加载或执行。...基本用法 建立一个简单的 IntersectionObserver 非常方便。...向下滚动,一系列元素会出现。用一个 IntersectionObserver 实例监视 3 个目标元素。当它们完全进入视口(root)后,向目标元素上附加一个样式类名,触发对应的 CSS 动画。...Demo 2 – 页内导航 对于单页中随着滚动、相应某个区域的出现而高亮的导航条,Intersection Observer 是很适用的。 ?

1.3K10

懒加载 React 长页面 - 动态渲染组件

Element.clientHeight 元素内部的高度,包含内边距,但不包括水平滚动条、边框和外边距。...个组件,类似常见分页逻辑中的 pageSize = 3,我们可以将 n 个组件分割成每 3 个 1 组,对每组依次进行渲染,并用 compGroups 保存分割的组,同时使用 groupIdx 指针来指向下一个需要渲染的组序列...监听滚动优化 在滚动时会频繁触发 scrollRenderHandler 函数,导致页面性能低下。...症结分析 至此,随着屏幕滚动,我们基本完成了组件动态渲染的要求。但还有另外一个问题:随着滚动,相同的数据接口请求了多次。 ? ? 如上图,同一楼层的接口被请求了两遍。...API 接口参考 | MDN: https://developer.mozilla.org/zh-CN/docs/Web/API/Element/getBoundingClientRect [6] IntersectionObserver

3.4K20

IntersectionObserver 是否进入了视口(viewport)

IntersectionObserver这个API已经存在很多年了,从来没用过,兼容性几乎也不用考虑: 使用API: var io = new IntersectionObserver(callback...因为滚动可能是窗口也可能是容器,当设置是容器的时候,窗口滚动可能需要设置用来匹配内部需求。...('wrap'), rootMargin: '100px 10px' }) 表示在容器内上下滚动距离可视范围100px的时候就触发回调,左右滚动距离10px的时候触发。...使用场景常用的应该是懒加载和滚动到底部加载更多,有了这个API,图片的懒加载也变得简单了,可能是出于兼容性的原因,现在懒加载和滚动到底部加载更多的库都没有使用。...之后要是有机会,我会直接使用这个API,实在兼容性不行的话再使用监听滚动

85920

Interection Observer如何观察变化

观察者对象 传递给回调函数的观察者数据如下: IntersectionObserver root: null rootMargin: "0px 0px 0px 0px" thresholds...把页面放在静态服务器上,然后我用Puppeteer加载了HTML文件,启动了跟踪,让页面以预设的增量向下滚动到底部,一旦到达底部,就停止了跟踪,最后保存跟踪的结果。...每个测试都有两个文件:一个用于Intersection Observer,另一个用于滚动事件。 所有测试的目的是检测目标元素何时以25%的增量向上滚动通过视口。...第一个测试有一个观察者或一个滚动事件,每个事件都有一个回调。对于观察者和滚动事件,这是一个相当标准的设置。尽管在这种情况下,滚动事件还有很多工作要做,因为滚动事件试图模仿观察者默认提供的数据。.../web/updates/2019/02/intersectionobserver-v2 [15] 第二类错误: https://szager-chromium.github.io/IntersectionObserver

2.5K20
领券