js解决移动端滚动穿透问题方案详解
作者:吃和远方
这篇文章主要为大家介绍了js解决移动端滚动穿透问题方案详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
引言
移动端有可滚动的弹窗肯定会遇到的问题,滑动弹层背景跟着滚动,如果弹窗里面的内容不需要滚动的可以直接粗暴的把滚动事件禁用掉,但是如果弹窗内容过多需要滚动那就不可以这样做。
更正(只适合白色背景的页面!只适合白色背景的页面!只适合白色背景的页面!因为有时候会出现闪白!我也没有找到完美解决滚动穿透的办法)
vue的解决办法
isShowDialog是控制弹窗显示的,监听isShowDialog的改变,对watch使用不明白的可以去看vue侦听器
watch:{ // 如果 ` isShowDialog` 发生改变,这个函数就会运行,第一个参数是isShowDialog最新的值 isShowDialog(val){ this.scrollForbid(val) } }
scrollForbid(val) { let body = document.body if(val){ // 弹窗显示的时候 this.scrollTop = window.scrollY body.style.width = '100%' body.style.position = 'fixed' body.style.top = -this.scrollTop + 'px' } else { // 弹窗关闭 body.style.width = '' body.style.position = '' body.style.top = '' window.srcollTo(0,this.scrollTop) } }
原生js解决办法
如果用原生来写的话调用scrollForbid(val)方法,禁止滚动的时候传true,解除滚动传false过去就可以了。
以上就是js解决移动端滚动穿透问题方案详解的详细内容,更多关于js移动端滚动穿透的资料请关注脚本之家其它相关文章!