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

标签 javascript css scroll overflow

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

FIDDLE

最佳答案

在菜单打开时设置:

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; });

你需要在文本div中为它添加一个class="noScroll",检查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 .

关于javascript - 在元素内部滚动时防止 HTML 滚动,不隐藏滚动条,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26223714/

相关文章:

javascript - 滚动更改元素不透明度

javascript - Electron - preload.js 未加载并且在 Windows 10 上发生错误

javascript - Three.js 转换一个选取数组

html - 如何访问多行中的每四个元素?

当div位于父div顶部时,javascript触发事件

javascript - d3.js 气泡图 : Make div scrollable

javascript - 在 url 的请求参数中传递 "#"哈希符号在 Firefox 中不起作用

javascript - 来自 ReactJs 的 POST 请求

html - 图像周围有白色边框

css - 为什么我的标题元素下方有一个额外的间距?