使用css禁用移动滚动

时间:2013-07-29 17:52:37

标签: android ios css mobile

当div位于前景时,我想禁止滚动主体。 div是可滚动的,我不希望身体随之滚动。我在浏览器中完成了这个,但它在移动设备中不起作用。从div开放时我需要改变什么:

$('body').css('overflow', 'hidden');
当div关闭时:

$('body').css('overflow', 'auto');

但正如我所说,它不适用于移动设备(iOS或Android)。我也尝试了epreventdefault(),但没有帮助。通过onclick事件改变了css ......

2 个答案:

答案 0 :(得分:1)

这对我有用:

document.body.scroll = "no";
document.body.style.overflow = 'hidden';
document.height = window.innerHeight;

document.body.addEventListener('touchmove', function(e){ e.preventDefault(); });

答案 1 :(得分:1)

在面对移动滚动的类似问题导致我的可滚动div和不需要的滚动体的混乱之后,touchmove侦听器事件是关键。我遇到了一些警告,我必须弄明白。一,为了删除事件监听器,并让你的身体返回其滚动(就像我的情况一样从右边滑入并覆盖整个窗口的菜单)你必须命名包含在事件监听器中的函数,这样你可以使用removeEventListener调用相同的函数。

var prevent = function(e){ 
    e.preventDefault();
};

function menuOpen(){
    document.body.addEventListener('touchmove', prevent);
};

function menuClose(){
    document.body.removeEventListener('touchmove', prevent);
};