vue中pc移动滚动穿透问题如何解决


这篇文章主要介绍“vue中pc移动滚动穿透问题如何解决”,在日常操作中,相信很多人在vue中pc移动滚动穿透问题如何解决问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”vue中pc移动滚动穿透问题如何解决”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!如果上层需要滚动的话,那么固定的时候先获取 body 的滑动距离,然后用 fixed 固定,用 top 模拟滚动距离;不固定的时候用获取 top 的值,然后让 body滚动到之前的地方即可。示例如下:body是DOM对象里的body子节点,即 标签;documentElement 是整个节点树的根节点root,即 标签;不同浏览器中,有的能识别document.body.scrollTop,有的能识别document.documentElement.scrollTop,有兼容性问题需要解决。滑动穿透:浮层上的触控会导致底层元素滑动。1、给body加overflow:hidden,pc端可以锁scroll,移动端无效pc端可以直接overflow:hidden解决2、给body加overflow:hidden及绝对定位,背景会定位到顶部,如果是单屏页面可以,长页面不适用如果弹出浮层时背景本来就没有滚动距离,可以overflow:hidden加绝对定位解决3、禁用touchmove事件,如@touch免费云主机域名move.prevent,对于弹层不需要的滑动的元素来说非常好用,因为scroll是touchmove触发的,直接禁用就不会滑动穿透了,其实是直接就没有系统滑动事件了。但是显然不适合弹层需要滑动的情况如果弹层时不需要滚动的,可以直接禁用touchmove就可以了4、专门解决滑动穿透的第三方,存在巨大的兼容性问题。比如tua-body-scroll-lock,android可以完美解决,ios整个屏幕都不能滑动了。高星的body-scroll-lock据说android全挂,就没有试了。第三方有兼容性问题,可以自己判断ua选用5、终极解决方案:vant的popup合理完美的解决方案,不存在兼容问题,适用于任何情况的popup。如果你不想为了锁背景引入一个根本用不到的库,可以一起来研究下popup的实现原理。如果不想看源码想直接知道结论的话可以看这里:因为常见会滑动穿透的场景都是:子元素本来就不可滚动,在子元素上滑动引起背景滚动,子元素可以滚动,但已经滚动到顶部或者底部,继续滑动的话就会滑动穿透所以如果子元素本身不可滚动,或者子元素氪滚动,但已经滚动到顶部或者底部时直接对touchmove进行默认事件阻止就可以阻止滑动穿透了。因为scroll事件是通过touchmove触发的,禁止掉就不会触发系统的scroll事件了。这样就可以完美解决可滚动元素可以滚动但其背景在滑动时不为所动的效果了。如果你想看看popup到底时如何做的可以来看看下面的源码:源码分析:src/popup/index.js文件中主要是参数及界面显示的处理。根据mixins混入,可以看到核心部分应该在src/mixins/popup中,在这里针对lockscroll做出了两种处理,绑定touchmove及touchstart并绑定class:van-overflow-hidden来看看touch的处理,可以看到给touchstart及touchmove绑定了滑动方向及距离得计算,touchmove这个方法会在ontouchmove中被调用,注意名称,不要混淆。到此,关于“vue中pc移动滚动穿透问题如何解决”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注百云主机网站,小编会继续努力为大家带来更多实用的文章!

相关推荐: CSS如何实现三列DIV等高布局

今天小编给大家分享一下CSS如何实现三列DIV等高布局的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。纯CSS实现三列DIV等高布局DIV等高布局…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

Like (0)
Donate 微信扫一扫 微信扫一扫
Previous 03/25 07:34
Next 03/25 07:34

相关推荐