有没有办法,就是我弹窗的时候移动端界面不能滚动页面?

我有个弹窗,是在手机端的,能不能弹窗的时候禁止手机端滚动scroll?
或者就是js控制让弹窗始终垂直居中于手机屏幕?

阅读 5.5k
9 个回答

给body加个fixed就可以了,用个函数包装。

var Common={};
window.Common.TOP_stopBodyScroll=0;
window.Common.stopBodyScroll=function (isFixed) {
    if (isFixed) {
        window.Common.TOP_stopBodyScroll = window.scrollY
        document.body.style.position = 'fixed'
        document.body.style.top = -window.Common.TOP_stopBodyScroll + 'px'
    } else {
        document.body.style.position = ''
        document.body.style.top = ''
        window.scrollTo(0, window.Common.TOP_stopBodyScroll) 
    }
}

给body加一个overflow:hidden试试。

document.addEventListener("touchmove", function (event) {

if (alertIsShow) {
    event.preventDefault();
}

},false);

在弹窗的时候禁用调滚动

Ihere说的很对,还有一个方法可以用在简单需求下,就是阻止当前的touchmove事件中的默认行为,也可以做到,但是如果需要滑动就还是用Ihere的方法吧

你的弹出框fixed定位全部屏幕,然后阻止事件向上传递event.stopPropagation()

弹出窗显示的时候设置当前整个页面的高度等于可视区域的高度

弹窗滚动scroll是什么意思?
js让弹窗垂直居中的方法:
1、可以用一些框架里面的模态窗口,比如bootstrap,weui
2、自己手动写,先获取屏幕的高度和弹出窗口的高度,弹出窗口设置fixed,top=(屏幕高度-弹出窗口高度)/2

新手上路,请多包涵

把你的所有内容用一个大div包起来,弹框出现时这个div绝对定位顶部。

遇到同样的问题~~~
我用了 event.preventDefault();还做了兼容不生效;
body加了overflow:hidden;还不生效;
最后是html加了overflow:hidden才生效

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题