首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

【总结】1823- 移动端滚动穿透滚动溢出解决方案

滚动穿透 问题描述 在移动端 WEB 开发的时候(小程序也雷同),如上录屏所示,如果页面超过一屏高度出现滚动条时,在 fixed 定位的弹窗遮罩层上进行滑动,它下面的内容也会跟着一起滚动,看起来好像事件穿透到下面的...DOM元素上一样,我们姑且称之为滚动穿透。...问题描述 如上录屏所示,弹窗内也含有滚动元素,在滚动元素滚到底部或顶部时,再往下或往上滚动,也会触发页面的滚动,这种现象称之为滚动链(scroll chaining), 但是感觉滚动溢出(overscroll...,从而页面滚动也不会触发了,而在滚动之间则不做处理。...e.preventDefault() } }) 解决方案完整 Demo https://github.com/Barrior/cases/blob/main/overscroll.html

35811

从 antDesign 来窥探移动端“滚动穿透”行为

上述是 MDN 中对于 overscroll-behavior 属性的描述,上述这段话恰恰描述了为什么会发生"滚动穿透"现象。...您可能还注意到,当滚动内容页面顶部有一个包含滚动内容的对话框时,一旦到达对话框的滚动边界,底层页面就会开始滚动 - 这称为滚动链接。...解决思路 通过上边的描述我们已经了解了”滚动穿透“的原理:绝大多数浏览器厂商对于滚动,如果目标节点不能滚动则会尝试触发祖先节点的滚动,就比如上述第一种现象。...而对于目标节点可以滚动时,当滚动到顶部/底部继续进行滚动时,同样会意外触发祖先节点的滚动。...在移动端,我们完全可以使用一种通用的解决方案来解决上述造成“滚动穿透”意外行为: 无论元素是否可以滚动时,每次元素的拖拽事件触发时我们只需要进行判断: 寻找当前触发 touchMove 事件 event.target

27120

【前端词典】滚动穿透问题的解决方案

我们今天讨论的是移动端的滚动穿透问题。上面这段调侃的话可以看出需求中弹窗浮层还是挺常见的,那这个和滚动穿透有什么联系呢?...我先解释下什么是滚动穿透: 页面滑出了一个弹窗,我们用手指触摸屏幕滑动时,会发现弹窗下面的内容还是在滚动。这个现象就是滚动穿透。 接下就说下我对滚动穿透问题解决方案探索的过程,希望对大家有点启发。...突然意识到写弹窗的时候忘记处理滚动穿透的问题了。记得第一次遇到这个问题的时候也是找了很久的资料。...部分document.body.classList.add('modal_open');document.body.classList.remove('modal_open'); 上面的这个方法可以解决滚动穿透问题...即: body 的滚动位置会丢失,也就是 body 的 scrollTop 属性值会变为 0。 这个新问题比起滚动穿透本身来说更加麻烦,所以这个方案是要进行优化的。

90350

滚动穿透的6种解决方案【已自测】

关键代码: JS控制弹窗的交互、body的禁止滚动 ? css添加弹层的超出滚动效果 ? 局限问题: 弹层中内容滚动到顶部或底部后,还会连带页面body一起滚动。也就是还会发生穿透效果。...就能阻止滚动穿透。 关键代码: js控制弹窗的交互、弹窗的禁止滚动 ?...也就是禁止整个弹窗的touchmove的默认事件,以阻止滚动穿透。 同样,如果弹层中需要滚动效果,则不能解决了。...但是同样的问题是,需要判断滚动到顶部和滚动到底部的时候禁止滚动。否则,就和第二条一样,触碰到上下两端,弹窗可滚动区域的滚动条到了顶部或者底部,依旧穿透到body,使得body跟随弹窗滚动。...链接:https://github.com/xingorg1/jsStudy/tree/master/移动端滚动穿透

13.3K31

这一次,彻底解决滚动穿透

什么是滚动穿透 如图所示,有一层遮罩蒙层覆盖在body上时,当我们滚动遮罩层,它下面的内容也会跟着一起滚动,看起来好像是上面的滚动事件穿透到下面的DOM元素上一样,我们称之为滚动穿透。...既然它触发了整个 viewport的滚动,那么我们给 body上加个 overflow:hidden,让整个body变成不可滚动的元素: html, body {    overflow: hidden...我们可以在加入 overflow:hidden的同时选择性做: 将 html,body的高度设置为 100% 将 html,body设置为绝对定位 这两个操作都可以完美地禁止整个body的滚动,但带来的最大问题是...正如一开始介绍穿透问题那样,当滑动超出边界时,一样会触发默认的滚动穿透。...,但其实这时还有其他浮层需要阻止滚动穿透

2.2K21

【兼容性】H5滚动穿透解决方案

3部分 1、什么是滚动穿透 2、为什么会滚动穿透 3、怎么解决滚动穿透 4、碰到的问题 什么是滚动穿透 大家肯定不陌生了,做移动端开发的,肯定都碰到过,比如 我明明滚动的是弹窗,但是底下的 document...,我们就可以对症下药了 既然 document 是备胎滚动选项,那么就让 document 不可滚动 1body overflow hidden html, body { overflow: hidden...2body height 100% html, body { overflow: hidden; height:100%} 是可以,但是会丢失 滚动高度,文档回到最顶部。...页面内容从 0 突然跳到 原先位置,可想而知会有 闪动,体验仍然不好 4避免页面跳回顶部 拿到 页面的滚动高度,在给 html 设置 这些样式的时候 html{ overflow: hidden; height...(毕竟只要元素能滚就能发生穿透) 但是document 还是不会滚动的 3滚动穿透的触发条件 一次没有抬起的滚动行为(手没有离开屏幕)导致元素滚动到顶部或者 底部之后,如果手还在屏幕上往两端滑,并不会触发滚动穿透

4.9K20

html左右循环滚动代码,不间断循环滚动效果的实例代码(必看篇)

滚动测试 /** * @para obj 目标对象 如:demo,deml1,demo2 中的”demo” 可任意,只要不重复 * * @para speed 滚动速度 越大越慢 * * @para...filePath 存放滚动图片的路径 (如果是自动获取文件夹里的图片滚动) * * @para contentById 对某id为contentById下的内容进行滚动滚动与filePath不能共存请注意...() { var _html =””; _html+=” “; _html+=” _html+=” “; _html+=” “; // 此处是放要滚动的内容 _html+=” “;..._html+=” “; _html+=” “; _html+=” “; _html+=” “; return _html; } // 上下滚动的结构 function UDStructure()...{ var _html =””; _html+=” “; _html+=” _html+=” “; _html+=” “; // 此处是放要滚动的内容 _html+=” “; _html

4.5K20
领券