移动端有可滚动的弹窗确定会遇到的问题,滑动弹层背景跟着滚动,若是弹窗里面的内容不须要滚动的能够直接粗暴的把滚动事件禁用掉,可是若是弹窗内容过多须要滚动那就不能够这样作。如下这个解决办法在线上使用没有问题,能够大胆拿去用。html
isShowDialog是控制弹窗显示的,监听isShowDialog的改变,对watch使用不明白的能够去看vue侦听器,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) } }
若是用原生来写的话调用scrollForbid(val)方法,禁止滚动的时候传true,解除滚动传false过去就能够了。ide