防止HTML滚动在元素内滚动时,不隐藏滚动条

时间:2014-10-06 19:47:09

标签: javascript css scroll overflow

当用户在菜单中滚动时,我想阻止正文或html的滚动。但是,我不想设置$('html').css('overflow','hidden');因为这会使整个文档向右移动。我只是想在菜单内滚动或滑动时禁用HTML滚动。我试图搜索这个主题很多,但我发现的任何东西都不适合我。

FIDDLE

1 个答案:

答案 0 :(得分:1)

菜单打开时设置:

var thisHeight = $(window).scrollTop();
$(window).on('scroll', function() {
    $('html,body').scrollTop(thisHeight);
});

$('.noScroll').on('touchstart' , function(e) { e.preventDefault(); })
$('.noScroll').on('touchmove' , function(e) { e.preventDefault(); })

当它关闭时:

$(window).off('scroll');
$('.noScroll').off('touchstart');
$('.noScroll').off('touchmove');
$('.noScroll').on('touchstart' , function(){ return true; });        
$('.noScroll').on('touchmove' , function(){ return true; });

您需要在文本class="noScroll"中为其添加div,请查看FIDDLE。

iOS解决方案基于:

How to unbind a listener that is calling event.preventDefault() (using jQuery)?


JSFIDDLE:http://jsfiddle.net/m2ga2ygo/4/

上传的测试:https://liebdich.biz/develop/iosMobile.html