今天我在编辑html页面的时候使用到一个固定尺寸的div,这里就叫它wrapper吧。...wrapper里面是列表内容,wrapper一开始被我设置成了固定大小,然后overflow-y: auto,即我希望这个div里面超出的内容能够通过在div内向下滑动查看。...其他的浏览器都没有问题,只是在IE7下面超出的内容一部分并没有隐藏(特别是列表中的图片),而是超出了div全都显示在页面中,同时滚动条还在。...最后找到的解决办法是:给wrapper加上style="position: relative"就行了!!!
如果在蒙层的内部进行滚动,当蒙层内滚动条滚动到底部的时候再继续滚动的话,蒙层下的页面也是能够滚动的,这样的交互就比较混乱,文中内容的测试环境是Chrome 96.0.4664.110。 <!...所以如果在蒙层内部有元素需要滚动的话,需要用Js控制其逻辑,但是逻辑控制起来又是比较复杂的,我们可以判断事件的event.target元素,如果touch的目标是弹窗不可滚动区域即背景蒙层就禁掉默认事件...,反之就不做控制,之后又出现了问题,需要判断滚动到顶部和滚动到底部的时候禁止滚动,否则触碰到上下两端,弹窗可滚动区域的滚动条到了顶部或者底部,依旧穿透到body,使得body跟随弹窗滚动,这样的话逻辑的复杂程度就比较高了....clientY); //本次移动时鼠标的位置,用于计算 let scrollTop = scrollerContainer.scrollTop; // 当前滚动的距离...,要阻止页面滚动,可以将其固定在视图中即position: fixed,这样它就无法滚动了,当蒙层关闭时再释放,当然还有一些细节要考虑,将页面固定视图后内容会回头最顶端,这里我们需要记录一下用来同步top
fixed 固定定位 相对于浏览器窗口进行位置调整 sticky 粘性定位 是基于用户的滚动位置来定位。 固定定位 相对于浏览器窗口进行定位,其它与绝对定位的特性一致。...常见的应用有:楼梯式导航、浏览器右侧菜单、底部通栏、全屏黑色半透明遮罩弹出层、弹出注册和登录框、左上固定右自适应后台管理系统布局 粘性定位 当滚动的高度>元素与浏览器的高度时,会以fixed固定定位显示...常见的应用有:吸顶盒导航,滚动吸附效果 1、楼梯式导航、浏览器右侧菜单、底部通栏(固定定位应用) 这三个案例用都是用固定定位来控制其与浏览器位置。...//获取滚动条滚动的高度 scrollTop=document.documentElement.scrollTop || document.body.scrollTop;...) 这个效果中黑色的半透明遮罩层和弹出的视频都是相对于浏览器来固定定位的。
获取可视区域高度赋值给div(解决document.body.clientHeight的返回值为0的问题) 设置html,body{height:100%} 在使用html5文档类型的时候, 设置了html...body的高度100%之后,两个浏览器就都能获取document.body.clientHeight了 声明下会返回0 alert(body_height); Load.style.height...script> ...
获取可视区域高度赋值给div(解决document.body.clientHeight的返回值为0的问题) 设置html,body{height:100%} 在使用html5文档类型的时候, 设置了html...body的高度100%之后,两个浏览器就都能获取document.body.clientHeight了 ?...DOCTYPE html>声明下会返回0 alert(body_height); Load.style.height...script> ...
这个接口描述了所有相同种类的元素所普遍具有的方法和属性。 这些继承自Element并且增加了一些额外功能的接口描述了具体的行为....Element属性 说明 实例值 clientHeight、clientWidth (只读)该元素它内部的宽度、宽度 300(border-box) clientTop、clientLeft (只读)该元素距离它左边界的宽度...、宽度 0 scrollHeight、scrollWidth (只读,整数)包括由于溢出导致的视图中不可见内容 300 scrollLeft、scrollTop 读取或设置元素滚动条到元素左边、顶部的距离...0(内部无滚动条) - clientHeight:可以通过 CSS height + CSS padding - 水平滚动条高度 (如果存在)来计算 - scrollHeight:返回整数,如果需要小数使用...该元素左上角相对于 HTMLElement.offsetParent 节点的左边界、顶部偏移的像素值 180+3=183 - offsetParent: 返回一个指向最近的(closest,指包含层级上的最近
;"> 由于内部的div标签高度比外部的长,并且外部的div允许自动出现垂直滚动条...其实,图中标出的a、b,对我们编程写js代码没有任何具体意义,它仅仅具有象征意义。 实际上,在js代码里,滚动条是被抽象为一个“点”来对待的。...scrollHeight其实不是“滚动条的高度”(b),而是表示滚动条需要滚动的高度,即内部div的高度750px。...//滚动距离总长(注意不是滚动条的长度) var nScrollTop = 0; //滚动到的当前位置 var nDivHight = $("#div1").height...FF 下测试通过 代码解说: 内部div高度为750,外部div高度为500,所以垂直滚动条需要滚动
"> 由于内部的div标签高度比外部的长,并且外部的div允许自动出现垂直滚动条,所以用浏览器打开后...其实,图中标出的a、b,对我们编程写js代码没有任何具体意义,它仅仅具有象征意义。 实际上,在js代码里,滚动条是被抽象为一个“点”来对待的。...scrollHeight其实不是“滚动条的高度”(b),而是表示滚动条需要滚动的高度,即内部div的高度750px。...//滚动距离总长(注意不是滚动条的长度) var nScrollTop = 0; //滚动到的当前位置 var nDivHight = $("#div1").height(); $("#div1")....scroll(function(){ nScrollHight = $(this)[0].scrollHeight; nScrollTop = $(this)[0].scrollTop; if
scrollWidth表示元素的总宽度,包括由于溢出而无法展示在网页的不可见部分 [注意]IE7-浏览器返回值是不准确的 【1】没有滚动条时,scrollHeight与clientHeight...元素未滚动时,scrollTop的值为0,如果元素被垂直滚动了,scrollTop的值大于0,且表示元素上方不可见内容的像素宽度 scrollLeft scrollLeft属性表示被隐藏在内容区域左侧的像素数...元素未滚动时,scrollLeft的值为0,如果元素被水平滚动了,scrollLeft的值大于0,且表示元素左侧不可见内容的像素宽度 当滚动条滚动到内容底部时,符合以下等式 scrollHeight...= function(){scrollTo(0,0);} scrollBy(x,y) scrollBy(x,y)方法滚动当前window中显示的文档,x和y指定滚动的相对量 <body...如果为true,表示元素的顶部与当前区域的可见部分的顶部对齐(前提是当前区域可滚动);如果为false,表示元素的底部与当前区域的可见部分的尾部对齐(前提是当前区域可滚动)。
,用于形成滚动条 infinite-list 为列表项的 渲染区域 接着,监听 infinite-list-container的 scroll事件,获取滚动位置 scrollTop 假定 可视区域高度固定...,称之为 screenHeight 假定 列表每项高度固定,称之为 itemSize 假定 列表数据称之为 listData 假定 当前滚动位置称之为 scrollTop 则可推算出: 列表总高度 listHeight...偏移量 startOffset = scrollTop - (scrollTop % itemSize); 最终的 简易代码如下: <div ref="list" class=...列表项动态高度 在之前的实现中,列表项的高度是固定的,因为高度固定,所以可以很轻易的获取列表项的整体高度以及滚动时的显示数据与对应的偏移量。...可以是一个根据列表项索引返回其高度的函数:(index: number): number 这种方式虽然有比较好的灵活度,但仅适用于可以预先知道或可以通过计算得知列表项高度的情况,依然无法解决列表项高度由内容撑开的情况
scrollHeight、scrollWidth:获取对象可滚动的总高度/宽度 offsetLeft、offsetTop:获取当前对象与父元素之间的距离(不包含父元素的边框) offsetWidth、...应用的地方:在书写一些效果时,如无缝滚动、放大镜、拖拽。我们会使用到元素的宽度或者内部元素到父级元素的距离等。那么这些值怎么书写呢? 一种最为简单的方法即为:直接使用常量。...() { box.scrollTop += 1; // 到达一半位置返回初始状态 if (box.scrollTop == 400) { box.scrollTop = 0; }; } function...将如下代码: if (box.scrollTop == 400) { box.scrollTop = 0; }; 修改为: if (box.scrollTop == con.offsetHeight /...2) { box.scrollTop = 0; }; 关于滚动条 在12种属性当中,存在如下两对:offsetHeight&clientHeight;offsetWidth&clientWidth。
2018的提出问题,2019年官方给出了解决方案recycle-view微信小程序长列表卡顿,但是这个只能解决部分问题,对于嵌套数据可能并不能适配。而且内部实现也是按虚拟列表渲染的思路去操作的。...--暂时固定高度--> <!...= scrollRef.value.scrollTop // todo 高度计算 // 高度偏移需要配合上数据更新才能完成滚动的交互 scrollTop.value...= _scrollTop }) }) // 用一个生命周期 后期可换成 异步触发 onMounted(() => { let total = 0;...]) 复制代码 渲染数据的计算 采用计算属性根据 showListIndexs 的变化来进行更新,通过scrollTop计算位置后,拿到一二层下标进行数据截取,不过滚动位置的变化导致第二层数据可能无法满足渲染整个可视区域
对于inline的元素这个属性一直是0 offsetTop/offsetLeft/offsetRight/offsetBottom: 代表元素距离父级元素的相对距离,但是父级元素需要具有relative...定位,直到找到body,并且即使元素会被滚动,这个值也不会改变 scrollWidth/scrollHeight scrollWidth/scrollHeight 返回值包含 content + padding...+ 溢出内容的尺寸,这个只针对dom的子元素出现溢出情况时,才有效果,不然它始终和clientHeight相等 scrollTop 代表在有滚动条时,滚动条向下滚动的距离也就是元素顶部被遮住部分的高度...在没有滚动条时scrollTop==0。...大概是这样 实现思路就是,去拿到选中元素的clientHeight和offsetTop,并和列表的高度区间做比较,计算出元素是在列表视口的内部,还是溢出的视口,如果溢出了视口,那么就回滚。
所以当滚动条在最顶端的时候, scrollTop=0 ,当滚动条在最低端的时候, scrollTop=115 这个115怎么来的(滚动条高度是15,我量的),见下图。..._(:з」∠)_ scrollTop是一个整数。 如果一个元素不能被滚动,它的scrollTop将被设置为0。 设置scrollTop的值小于0,scrollTop 被设为0。...如果设置了超出这个容器可滚动的值, scrollTop 会被设为最大值。...判定元素是否滚动到底: element.scrollHeight - element.scrollTop === element.clientHeight 返回顶部 element.scrollTop...= 0 一个简单的返回顶部的时间,一个需要注意的地方是,动画是由快到慢的。
粘性定位 sticky 相当于相对定位 relative 和固定定位 fixed 的结合;在页面元素滚动过程中,某个元素距离其父元素的距离达到 sticky 粘性定位的要求时;元素的相对定位 relative...效果变成固定定位 fixed 的效果。...scrolloTop() 有兼容性问题,在微信浏览器、IE、某些 firefox 版本中 $('html').scrollTop() 的值会为 0,于是乎也就有了第三种方案的兼容性写法。...我们一定需要使用 scrollTop-offsetTop 的值来实现滚动吸顶的效果吗?答案是否定的。 我们一同看看第四种方案。...(保存变量); 在使用的时候可能出现 DOM 没有初始化,就读取了该属性,这个时候会返回 0;对于这个问题我们需要等到 DOM 元素初始化完成后再执行。
scollTop scrollTop 可以被设置为任何整数值,同时注意: 如果一个元素不能被滚动(例如,它没有溢出,或者这个元素有一个”non-scrollable”属性), scrollTop将被设置为...设置scrollTop的值小于0,scrollTop 被设为0 如果设置了超出这个容器可滚动的值, scrollTop 会被设为最大值....总结:元素发生溢出时可以设置scrollTop,设置的值为元素里内容向上滚动的不可见区域的高度 scollHeight 判定元素是否滚动到底 如果元素滚动到底,下面等式返回true,没有则返回false...} <div id="scrollBody" style="position:absolute;top:0;bottom:0;left...,不如状态等于0的一个一个的置顶!
0x0 基础知识 所以什么是虚拟滚动/列表呢?... 其中: vListContainer 为可视区域的容器,具有 overflow-y: auto 属性。...在 phantom 中的每条数据都应该具有 position: absolute 属性 phantomContent 则是我们的“幻影”部分,其主要目的是为了还原真实List的内容高度从而模拟正常长列表滚动的行为...接着我们对 vListContainer 绑定一个onScroll的响应函数,并在函数中根据原生滚动事件的scrollTop 属性来计算我们的 startIndex 和 endIndex 列表总高度:...定高”元素的虚拟列表的实现,那么如果说碰到了高度不固定的超长列表的业务场景呢?
我们先初步看一个图 在这张展示图中,我们可以看到我们展示的始终是红色线虚线展示的部分,每一个元素固定高度,被一个很大高度的元素包裹着,并且最外层有一个固定的高度容器,并且设置可以滚动。...> 对应的css *{ padding:0px; margin: 0px; } #app { width:300px; border: 1px solid...} = e.target; // 计算当前滚动的位置,获取当前开始的起始位置 const currentIndex = Math.floor(scrollTop...,根据item固定高度(rowHeight),根据可视区域和rowHeight计算可显示的limit数目。...当滚动条上滑时,计算出滚动的距离scrollTop,通过currentIndex = Math.floor(scrollTop/rowHeight)计算出当前起始索引 根据endIndex = Math.min
写法 【1】锚点 使用锚点链接是一种简单的返回顶部的功能实现。...该实现主要在页面顶部放置一个指定名称的锚点链接,然后在页面下方放置一个返回到该锚点的链接,用户点击该链接即可返回到该锚点所在的顶部位置 [注意]关于锚点的详细信息移步至此 <body style="...元素未<em>滚动</em>时,<em>scrollTop</em><em>的</em>值为<em>0</em>,如果元素被垂直<em>滚动</em>了,<em>scrollTop</em><em>的</em>值大于<em>0</em>,且表示元素上方不可见内容<em>的</em>像素宽度 由于<em>scrollTop</em>是可写<em>的</em>,可以利用<em>scrollTop</em>来实现回到顶部<em>的</em>功能...如果为true,表示元素<em>的</em>顶部与当前区域<em>的</em>可见部分<em>的</em>顶部对齐(前提是当前区域<em>可</em><em>滚动</em>);如果为false,表示元素<em>的</em>底部与当前区域<em>的</em>可见部分<em>的</em>尾部对齐(前提是当前区域<em>可</em><em>滚动</em>)。...id="box" class="box"> 2】动画增强 为回到顶部增加动画效果,滚动条以一定的速度回滚到顶部
-滚动条 scrollTop和scrollHeight 总结 重要的勾子 即将废弃的勾子 ---- 案例引入 需求:定义组件实现以下功能: 让指定的文本做显示 / 隐藏的渐变动画 从完全可见...它使得组件能在发生更改之前从 DOM 中捕获一些信息(例如,滚动位置)。此生命周期方法的任何返回值将作为参数传递给 componentDidUpdate()。...getSnapshotBeforeUpdate的返回值 //this.refs.list.scrollHeight-height等于30,即一条新闻的高度 this.refs.list.scrollTop...body> scrollTop和scrollHeight scrollTop: 代表在有滚动条时,滚动条向下滚动的距离也就是元素顶部被遮住部分的高度。...在没有滚动条时scrollTop==0恒成立。单位px,可读可设置。
领取专属 10元无门槛券
手把手带您无忧上云