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

蒙层禁止页面滚动的方案

如果在蒙层的内部进行滚动,当蒙层内滚动条滚动到底部的时候再继续滚动的话,蒙层下的页面也是能够滚动的,这样的交互就比较混乱,文中内容的测试环境是Chrome 96.0.4664.110。 内部有元素需要滚动的话,需要用Js控制其逻辑,但是逻辑控制起来又是比较复杂的,我们可以判断事件的event.target元素,如果touch的目标是弹窗不可滚动区域即背景蒙层就禁掉默认事件...,反之就不做控制,之后又出现了问题,需要判断滚动到顶部和滚动到底部的时候禁止滚动,否则触碰到上下两端,弹窗可滚动区域的滚动条到了顶部或者底部,依旧穿透到body,使得body跟随弹窗滚动,这样的话逻辑的复杂程度就比较高了....clientY); //本次移动时鼠标的位置,用于计算 let scrollTop = scrollerContainer.scrollTop; // 当前滚动的距离...,要阻止页面滚动,可以将其固定在视图中即position: fixed,这样它就无法滚动了,当蒙层关闭时再释放,当然还有一些细节要考虑,将页面固定视图后内容会回头最顶端,这里我们需要记录一下用来同步top

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

    CSS固定定位与粘性定位4大企业级案例

    fixed 固定定位 相对于浏览器窗口进行位置调整 sticky 粘性定位 是基于用户的滚动位置来定位。 固定定位 相对于浏览器窗口进行定位,其它与绝对定位的特性一致。...常见的应用有:楼梯式导航、浏览器右侧菜单、底部通栏、全屏黑色半透明遮罩弹出层、弹出注册和登录框、左上固定右自适应后台管理系统布局 粘性定位 当滚动的高度>元素与浏览器的高度时,会以fixed固定定位显示...常见的应用有:吸顶盒导航,滚动吸附效果 1、楼梯式导航、浏览器右侧菜单、底部通栏(固定定位应用) 这三个案例用都是用固定定位来控制其与浏览器位置。...//获取滚动条滚动的高度 scrollTop=document.documentElement.scrollTop || document.body.scrollTop;...) 这个效果中黑色的半透明遮罩层和弹出的视频都是相对于浏览器来固定定位的。

    1.8K30

    【实例】调整区域大小&动态隐藏区域

    这个接口描述了所有相同种类的元素所普遍具有的方法和属性。 这些继承自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,指包含层级上的最近

    2K21

    纯滚动怎么理解_scrollview不滚动

    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指定滚动的相对量 的顶部与当前区域的可见部分的顶部对齐(前提是当前区域可滚动);如果为false,表示元素的底部与当前区域的可见部分的尾部对齐(前提是当前区域可滚动)。

    2.5K20

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

    ,用于形成滚动条 infinite-list 为列表项的 渲染区域 接着,监听 infinite-list-container的 scroll事件,获取滚动位置 scrollTop 假定 可视区域高度固定...,称之为 screenHeight 假定 列表每项高度固定,称之为 itemSize 假定 列表数据称之为 listData 假定 当前滚动位置称之为 scrollTop 则可推算出: 列表总高度 listHeight...偏移量 startOffset = scrollTop - (scrollTop % itemSize); 最终的 简易代码如下: div ref="list" class=...列表项动态高度 在之前的实现中,列表项的高度是固定的,因为高度固定,所以可以很轻易的获取列表项的整体高度以及滚动时的显示数据与对应的偏移量。...可以是一个根据列表项索引返回其高度的函数:(index: number): number 这种方式虽然有比较好的灵活度,但仅适用于可以预先知道或可以通过计算得知列表项高度的情况,依然无法解决列表项高度由内容撑开的情况

    11.3K74

    利用虚拟列表改造索引列表(IndexList)

    2018的提出问题,2019年官方给出了解决方案recycle-view微信小程序长列表卡顿,但是这个只能解决部分问题,对于嵌套数据可能并不能适配。而且内部实现也是按虚拟列表渲染的思路去操作的。...--暂时固定高度--> div style="height: 10000px">div> scrollTop // todo 高度计算 // 高度偏移需要配合上数据更新才能完成滚动的交互 scrollTop.value...= _scrollTop }) }) // 用一个生命周期 后期可换成 异步触发 onMounted(() => { let total = 0;...]) 复制代码 渲染数据的计算 采用计算属性根据 showListIndexs 的变化来进行更新,通过scrollTop计算位置后,拿到一二层下标进行数据截取,不过滚动位置的变化导致第二层数据可能无法满足渲染整个可视区域

    1.7K00

    scrollLeft等属性介绍

    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。

    1.3K50

    clientWidth,offsetWidth,scrollWidth你分的清吗

    对于inline的元素这个属性一直是0 offsetTop/offsetLeft/offsetRight/offsetBottom: 代表元素距离父级元素的相对距离,但是父级元素需要具有relative...定位,直到找到body,并且即使元素会被滚动,这个值也不会改变 scrollWidth/scrollHeight scrollWidth/scrollHeight 返回值包含 content + padding...+ 溢出内容的尺寸,这个只针对dom的子元素出现溢出情况时,才有效果,不然它始终和clientHeight相等 scrollTop 代表在有滚动条时,滚动条向下滚动的距离也就是元素顶部被遮住部分的高度...在没有滚动条时scrollTop==0。...大概是这样 实现思路就是,去拿到选中元素的clientHeight和offsetTop,并和列表的高度区间做比较,计算出元素是在列表视口的内部,还是溢出的视口,如果溢出了视口,那么就回滚。

    2.7K10

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

    粘性定位 sticky 相当于相对定位 relative 和固定定位 fixed 的结合;在页面元素滚动过程中,某个元素距离其父元素的距离达到 sticky 粘性定位的要求时;元素的相对定位 relative...效果变成固定定位 fixed 的效果。...scrolloTop() 有兼容性问题,在微信浏览器、IE、某些 firefox 版本中 $('html').scrollTop() 的值会为 0,于是乎也就有了第三种方案的兼容性写法。...我们一定需要使用 scrollTop-offsetTop 的值来实现滚动吸顶的效果吗?答案是否定的。 我们一同看看第四种方案。...(保存变量); 在使用的时候可能出现 DOM 没有初始化,就读取了该属性,这个时候会返回 0;对于这个问题我们需要等到 DOM 元素初始化完成后再执行。

    2.8K60

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

    写法 【1】锚点   使用锚点链接是一种简单的返回顶部的功能实现。...该实现主要在页面顶部放置一个指定名称的锚点链接,然后在页面下方放置一个返回到该锚点的链接,用户点击该链接即可返回到该锚点所在的顶部位置   [注意]关于锚点的详细信息移步至此 滚动时,scrollTop的值为0,如果元素被垂直滚动了,scrollTop的值大于0,且表示元素上方不可见内容的像素宽度   由于scrollTop是可写的,可以利用scrollTop来实现回到顶部的功能...如果为true,表示元素的顶部与当前区域的可见部分的顶部对齐(前提是当前区域可滚动);如果为false,表示元素的底部与当前区域的可见部分的尾部对齐(前提是当前区域可滚动)。...id="box" class="box"> div class="box-in">div> div> 2】动画增强   为回到顶部增加动画效果,滚动条以一定的速度回滚到顶部

    6.8K21

    了解虚拟列表背后原理,轻松实现虚拟列表

    我们先初步看一个图 在这张展示图中,我们可以看到我们展示的始终是红色线虚线展示的部分,每一个元素固定高度,被一个很大高度的元素包裹着,并且最外层有一个固定的高度容器,并且设置可以滚动。...> div> div> 对应的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

    3.8K10
    领券