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

一种TreeView组件分页异步加载方法

1、无限滚动长列表 前端业务开发中会遇到数量很大列表展示情况,一般处理方法是使用某种方法分屏分页加载数据。 通常做法是检测是否滚动到底,然后进行网络请求操作。...但是,万一,列表每一结构复杂,用户又有可能上下滚动一整天呢?...滚动区域:假设有 1000 条数据,每个列表项高度是 30,那么滚动区域高度就是 1000 * 30。当用户改变列表滚动条的当前滚动时候,会造成可见区域内容变更。...比如列表高度是 300,右侧有纵向滚动条可以滚动,那么视觉可见区域就是可见区域。 ?...计算当前可见区域起始数据 startIndex 计算当前可见区域结束数据 endIndex 计算当前可见区域数据,并渲染到页面 计算 startIndex 对应数据在整个列表偏移位置 startOffset

1.7K32

点击按钮,回到页面顶部5种写法

元素未滚动时,scrollTop值为0,如果元素被垂直滚动了,scrollTop值大于0,且表示元素上方不可见内容像素宽度 由于scrollTop是可写,可以利用scrollTop来实现回到顶部功能...window显示文档,x和y指定滚动相对量,只要把当前页面的滚动长度作为参数,逆向滚动,则可以实现回到顶部效果 1 2 <button...Element.scrollIntoView方法滚动当前元素,进入浏览器可见区域,该方法可以接受一个布尔值作为参数。...如果为true,表示元素顶部与当前区域可见部分顶部对齐(前提是当前区域滚动);如果为false,表示元素底部与当前区域可见部分尾部对齐(前提是当前区域滚动)。...如果没有提供该参数,默认为true,使用该方法原理与使用锚点原理类似,在页面最上方设置目标元素,当页面滚动时,目标元素被滚动到页面区域以外,点击回到顶部按钮,使目标元素重新回到原来位置,则达到预期效果

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

    基于JS实现回到页面顶部五种写法(从实现到增强)

    元素未滚动时,scrollTop值为0,如果元素被垂直滚动了,scrollTop值大于0,且表示元素上方不可见内容像素宽度   由于scrollTop是可写,可以利用scrollTop来实现回到顶部功能...y)方法滚动当前window显示文档,让文档由坐标x和y指定点位于显示区域左上角   设置scrollTo(0,0)可以实现回到顶部效果 <body style="height:2000px...window<em>中</em>显示<em>的</em>文档,x和y指定<em>滚动</em><em>的</em>相对量   只要把当前页面的<em>滚动</em>长度作为参数,逆向<em>滚动</em>,则可以实现回到顶部<em>的</em>效果 <button...如果为true,表示元素<em>的</em>顶部与当前区域<em>的</em><em>可见</em>部分<em>的</em>顶部对齐(前提是当前区域<em>可</em><em>滚动</em>);如果为false,表示元素<em>的</em>底部与当前区域<em>的</em><em>可见</em>部分<em>的</em>尾部对齐(前提是当前区域<em>可</em><em>滚动</em>)。...如果没有提供该参数,默认为true   使用该方法<em>的</em>原理与使用锚点<em>的</em>原理类似,在页面最上方设置目标元素,当页面<em>滚动</em>时,目标元素被<em>滚动到</em>页面区域以外,点击回到顶部按钮,使目标元素重新回到原来位置,则达到预期效果

    5.4K21

    Scroll,你玩明白了嘛?

    scrollIntoViewIfNeeded:让元素滚动到视野内(如果不在视野内) 以大家用得比较多 scrollTo 为例,它有两种调用方式: // 第一种形式 const x = 0, y =...,即方法参数 behavior 分为两种: auto:立即滚动 smooth:平滑滚动 除了上述 3 个 api,我们还可以通过简单粗暴 scrollTop、 scrollLeft 去设置滚动位置...>  ); } 上述代码,提到了四种方式: 容器 scrollTop 赋值 容器 scrollTo 方法,传入横纵滚动位置 容器 scrollTo 方法,传入滚动配置 元素 scrollIntoView...比如说置顶某个元素,可以定义滚动容器 scrollTop 为该元素 offsetTop: container.scrollTop = element.offsetTop; 值得一提是,结合 CSS...3、用一个 button 来触发脚本滚动,调用 listScroll 方法,传入容器 ref,想要滚动到 scrollTop 以及滚动结束后 callback 方法。

    3.1K22

    虚拟滚动之原理及其封装

    虚拟滚动之原理及其封装 这仍然是笔者正在进行某个前端基础项目的一基础研究。...斟酌 非完整渲染长列表一般有两种方式: •懒渲染:这个就是常见无限滚动,每次只渲染一部分(比如 10 条),等剩余部分滚动到可见区域,就再渲染另一部分。...有两个重要基本概念: •滚动区域:假设有 1000 条数据,每个列表项高度是 30,那么滚动区域高度就是 1000 * 30。...当用户改变列表滚动条的当前滚动时候,会造成可见区域内容变更。•可见区域:比如列表高度是 300,右侧有纵向滚动条可以滚动,那么视觉可见区域就是可见区域。.../ itemHeight) + 1, // 视图区域显示item个数 items: [], // 可见列表项 startIndex: 0, // 第一个item索引

    9.9K20

    浏览器几个高度

    // 网页可见区域(body)高度,整数像素值 document.body.offsetWidth; // 网页可见区域(body)宽度,包括border,margin等像素值...// 文档高度 = $('html').height() document.documentElement.scrollTop // 滚动条顶部到文档顶部距离...+ scrollTop = scrollHeight 客户端高度 + 滚动上去高度 = 滚动高度(文档高度) 那么上拉加载效果, 用户进入网页: 载入首批数据,文档高度( $('...html').height() == 2500px ) 用户滚动 当条,当(监听滚动滚动状态) document.documentElement.scrollTop + document.documentElement.clientHeight...+ 500 > document.documentElement.scrollHeight ,及用户滚动剩下500px高度时候,开始下一次数据加载 当数据加载时候,停止滚动条监听,滚动触发需要限制

    1.9K20

    滚动怎么理解_scrollview不滚动

    本文介绍元素尺寸内容最多一部分——滚动scroll 滚动宽高 scrollHeight   scrollHeight表示元素总高度,包括由于溢出而无法展示在网页可见部分 scrollWidth...元素未滚动时,scrollTop值为0,如果元素被垂直滚动了,scrollTop值大于0,且表示元素上方不可见内容像素宽度 scrollLeft   scrollLeft属性表示被隐藏在内容区域左侧像素数...元素未滚动时,scrollLeft值为0,如果元素被水平滚动了,scrollLeft值大于0,且表示元素左侧不可见内容像素宽度   当滚动滚动到内容底部时,符合以下等式 scrollHeight...; } 滚动方法 scrollTo(x,y)   scrollTo(x,y)方法滚动当前window显示文档,让文档由坐标x和y指定点位于显示区域左上角 <...如果为true,表示元素顶部与当前区域可见部分顶部对齐(前提是当前区域滚动);如果为false,表示元素底部与当前区域可见部分尾部对齐(前提是当前区域滚动)。

    1.9K20

    JS scrollWidth、scrollHeight、scrollLeft 、scrollTop 详解

    总述 在JS scrollWidth、scrollHeight、scrollLeft 、scrollTop 属性在做一些复杂交互效果是非常常用,因此在本博文中详细介绍并给出实例。...3. scrollLeft 和scrollTop 3.1 概念 element.scrollLeft :返回元素左边缘与视图之间距离,这里视图指的是元素内容(包括子元素以及内容)。...element.scrollTop :返回元素上边缘与视图之间距离。 我们在页面中经常会用到如图所示滚动框,我们QQ消息,微信消息也是这样呀!...我们需要滑动滚动条来查看完整视图,这个时候scrollLeft 和scrollTop就出现了,其实实际项目中我们是需要用到client和scroll这两大属性来自动滑动滚动条,比如来新消息时候,滚动条自动往下滑动到底部以便查看新消息...当我将水平,垂直滚动条都拉到底部时,scrollLeft 和 scrollTop 都 分别为116.8 和156.8 ,我设置元素宽高分别为:200 180 ,视图(子元素)宽高分别为:300 320

    2.9K40

    大家都能看得懂源码之 ahooks useVirtualList 封装虚拟滚动列表

    简介 提供虚拟化列表能力 Hook,用于解决展示海量数据渲染时首屏渲染缓慢和滚动卡顿问题。 详情可见官网[3],文章源代码可以点击这里[4]。...根据外部容器 scrollTop 算出已经“过”多少,值为 offset。 根据外部容器高度以及当前开始索引,获取到外部容器能承载个数 visibleCount。...设置或获取位于对象最顶端和窗口中可见内容最顶端之间距离 scrollTop, // 内容可视区域高度 clientHeight, } = container...; // 根据外部容器 scrollTop 算出已经“过”多少 const offset = getOffset(scrollTop); // 可视区域 DOM 个数...// 滚动到指定 index const scrollTo = (index: number) => { const container = getTargetElement(containerTarget

    74420

    clientWidth,offsetWidth,scrollWidth你分清吗

    + 溢出内容尺寸,这个只针对dom子元素出现溢出情况时,才有效果,不然它始终和clientHeight相等 scrollTop 代表在有滚动条时,滚动条向下滚动距离也就是元素顶部被遮住部分高度...在没有滚动条时scrollTop==0。...;  var Y = node.getBoundingClientRect().top+node.scrollTop; 一个demo加深印象 有一个列表,当我们输入文段编号,列表会将选中文段滚动到视图中...大概是这样 实现思路就是,去拿到选中元素clientHeight和offsetTop,并和列表高度区间做比较,计算出元素是在列表视口内部,还是溢出视口,如果溢出了视口,那么就回。...笔者用react写,直接附上代码吧 dom (this.scrollRef

    2K10

    JS滑动滚动n种方式

    "}) 仍然是没有看到我们要呈现元素,疑似原因为我们选定元素爷爷级元素才是滑动 1.5 补充 scrollIntoView和scrollIntoViewIfNeeded区别在于,第一前者支持性较高...一个元素 scrollTop 值是这个元素内容顶部(卷起来)到它视口可见内容(顶部)距离度量。当一个元素内容没有产生垂直方向滚动条,那么它 scrollTop 值为0。...区别是设置behavior为'smooth'后会平滑滚动 3.2 使用说明 如果场景要求我们滚动页面到某个元素位置,此时可以使用window.scrollTo(); 如果场景要求我们滚动到某个滚动父元素位置...常见误解:element.scrollTo并不是将某个元素滚动到页面某个位置,而是如果该元素滚动,设置该元素滚动条 4 window.scrollBy或element.scrollBy 4.1 基本用法...left && (ele.scrollLeft = 0); return left > 0; } } } 5 找到某元素外层第一滚动元素

    6.3K10

    scrollTop和scrollHeight「建议收藏」

    scollTop scrollTop 可以被设置为任何整数值,同时注意: 如果一个元素不能被滚动(例如,它没有溢出,或者这个元素有一个”non-scrollable”属性), scrollTop将被设置为...设置scrollTop值小于0,scrollTop 被设为0 如果设置了超出这个容器滚动值, scrollTop 会被设为最大值....总结:元素发生溢出时可以设置scrollTop,设置值为元素里内容向上滚动可见区域高度 scollHeight 判定元素是否滚动到底 如果元素滚动到底,下面等式返回true,没有则返回false.... element.scrollHeight - element.scrollTop === element.clientHeight 总结:当元素无溢出时为元素本身高度,当元素发生溢出时为元素内容里面的总高度...,不如状态等于0一个一个置顶!

    84820

    蒙层禁止页面滚动方案

    如果在蒙层内部进行滚动,当蒙层内滚动滚动到底部时候再继续滚动的话,蒙层下页面也是能够滚动,这样交互就比较混乱,文中内容测试环境是Chrome 96.0.4664.110。 <!...,反之就不做控制,之后又出现了问题,需要判断滚动到顶部和滚动到底部时候禁止滚动,否则触碰到上下两端,弹窗滚动区域滚动条到了顶部或者底部,依旧穿透到body,使得body跟随弹窗滚动,这样的话逻辑复杂程度就比较高了...; // 滚动区域高度 let containerHeight = scrollerContainer.clientHeight; //可视区域高度...,要阻止页面滚动,可以将其固定在视图中即position: fixed,这样它就无法滚动了,当蒙层关闭时再释放,当然还有一些细节要考虑,将页面固定视图后内容会回头最顶端,这里我们需要记录一下用来同步top...在示例为了演示弹窗时不会导致视图重置到最顶端,将弹窗按钮移动到了下方。 <!

    6.3K21

    scrollLeft等属性介绍

    滚动类特效常用属性 scrollLeft 、scrollTop:设置或获取位于对象最顶/左端和窗口中可见内容最顶/左端之间距离。即当前上或左距离。...scrollHeight、scrollWidth:获取对象滚动总高度/宽度 offsetLeft、offsetTop:获取当前对象与父元素之间距离(不包含父元素边框) offsetWidth、...借助无缝滚动功能代码,我们来查看一下这种方法。 <!...此处使用这个常量并不是很好,在于其扩展性比较差,也就是说,一旦页面CSS代码box和con高度修改,会直接影响400这个值。 此时我们就可以使用上面的几个属性来替换掉400这个常量。...特意这么说,其实是希望各位注意,从边框开始计算,也会把滚动宽度/高度计算到结果之内,谷歌浏览器滚动宽/高度是17px,如果希望能够获取一个元素padding和内容,需使用clientWidth

    1.2K50

    JS事件篇

    scrollTop获取水平和垂直滚动滚动滚动距离 当满足scrollHeight - scrollTop == clientHeight时,表明垂直滚动滚动到底了 阅读知情同意书小案例 onmousemove...----火狐不支持,由DOMMouseScroll替代 判断滚轮上还是下----火狐不支持,由detail替代 取消滚动条随滚轮移动默认行为 键盘事件 浏览器对象模型---navigator...,如果满足条件元素有多个,那么它只会返回第一个 document.querySelectorAll() 该方法和 document.querySelector()用法类似,不同是它会将符合条件元素封装到一个数组返回...);//获取垂直滚动距离 } 当满足scrollHeight - scrollTop == clientHeight时,表明垂直滚动滚动到底了...-- 默认禁用,除非将滚动条滑动到最底部 --> 我同意上面的协议 //首先绑定一个滚动滚动事件

    12.6K10

    Selenium及python实现滚动操作多种方法

    =10000″ driver.execute_script(js) 这里id为滚动id,但js没有xpath方法,所以滚动条没有id网页此方法不适用 上面展示是上下方向滚动条,接下来介绍左右方向滚动操作方法...[0].scrollIntoView();”, target) #拖动到可见元素去 该方法可以将滚动条拖动到需要显示元素位置,此方法用途比较广 方法三:根据页面显示进行变通,发送tab键 比如...–scrollLeft 设置或获取位于对象左边界和窗口中目前可见内容最左端之间距离。 –scrollTop 设置或获取位于对象最顶端和窗口中可见内容最顶端之间距离。...(js) #滚动到顶部 js = "window.scrollTo(0,0)" driver.execute_script(js) 其他: robotframe work框架,selenium2library...("_easyui_tree_17") driver.execute_script("arguments[0].scrollIntoView();", target) #拖动到可见元素去 driver.find_element_by_xpath

    6.2K21

    你也许不知道浏览器一些滚动行为

    或者利用scrollTop设置: document.scrollingElement.scrollTop = 100; 注意:scrollTo跟scrollBy参数是一样,区别就是scrollBy滚动距离是相对与当前滚动条位置进行滚动...或者用锚点: 盒子出现在顶部 效果如下: 3....} 效果如下: 注意:设置了该属性之后,所有方法都可以不用设置behavior参数了,二选一即可,因为都是控制当前指定元素滚动行为,所以锚点跳转、设置scrollTop也具有平滑(smooth)滚动行为...document.body.scrollHeight; 现在你只需要: let scrollHeight = document.scrollingElement.scrollHeight; 因为在MDN是这样介绍它...判断浏览器已滚动到底部 window.addEventListener("scroll", () => { let { scrollTop, scrollHeight, clientHeight

    3K20

    「前端进阶」高性能渲染十万条数据(虚拟列表)

    ,才会触发渲染线程对页面进行渲染 第一个 console.log触发时间是在页面进行渲染之前,此时得到间隔时间为JS运行所需要时间 第二个 console.log是放到 setTimeout ...说完首次加载,再分析一下当滚动发生时,我们可以通过计算当前滚动值得知此时在屏幕 可见区域应该显示列表项。...假设滚动发生,滚动条距顶部位置为 150px,则我们可得知在 可见区域内列表项为 第4至`第13。 ?...偏移量 startOffset = scrollTop - (scrollTop % itemSize); 最终 简易代码如下: <div ref="list" class=...为了使页面平滑滚动,我们还需要在 可见区域上方和下方渲染额外项目,在滚动时给予一些 缓冲,所以将屏幕分为三个区域: 可视区域上方: above 可视区域: screen 可视区域下方: below

    10.6K74

    造一个 react-infinite-scroller 轮子

    ,包括由于溢出导致视图中不可见内容。...相当于上面的 “窗口高度” 总结一下,上面公式里 offset 表示距离底部 px 值,只要 offset < threshold 说明滚动到了底部,开始 loadMore()。...,滚动位置不应该还停留在 scrollY = 0 位置,不然会一直加载更多,比如此时滚动到了顶部: 3 <- 到顶部了,开始加载 2 1 0 加载更多后 6 <- 不应该停留在这个位置,因为会再次触发无限滚动...mousewheel 事件 在 Stackoverflow 这个帖子 说到:Chrome 下做无限滚动时可能存在加载时间变得超长问题。...对 touch 和 mouse 事件监听不会阻塞页面的滚动提高页面滚动性能。详情可见这篇文章。

    2.6K30

    听说你还不会虚拟列表?原谅我来晚了

    什么是虚拟列表 虚拟列表是指对列表 可视区域 进行渲染,对 非可见区域 不渲染或部分渲染,从而极大提高渲染性能一种技术。...安装 npm install --save vue-virtual-scroller 复制代码 RecycleScroller组件 适用于列表每一高度确定情况,高度可设置成相同,也单独配置每一高度...滚动区域:可以看作是中间层,假设有 10000 条数据,每个列表项高度是 50,那么滚动区域高度就是 10000 * 50。...这一层元素是不可见,目的是产生和真实列表一模一样滚动条。 可视区列表:可以看作是在最上层,展示当前处理后数据,高度和可视区容器相同。...-- 中间滚动区域,z-index=-1,高度和真实列表相同,目的是出现相同滚动条 --> <div class="infinite-list-phantom" :style="{ height

    99630
    领券