使用jQuery,我想禁用滚动正文:
我的想法是:
body{ overflow: hidden;}
scrollTop();/scrollLeft()
有没有更好的方法?
更新:
请在http://jsbin.com/ikuma4/2/edit上查看我的示例以及原因
我知道有人会想“为什么他不直接在面板上使用position: fixed
呢?”
请不要这样建议,因为我还有其他原因。
发布于 2010-09-07 15:34:35
我找到的唯一方法类似于你所描述的:
然后,当您准备好再次允许滚动时,撤消所有这些操作。
编辑:没有理由我不能给你代码,因为我费了好大劲才把它挖出来……
// lock scroll position, but retain settings for later
var scrollPosition = [
self.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft,
self.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop
];
var html = jQuery('html'); // it would make more sense to apply this to body, but IE7 won't have that
html.data('scroll-position', scrollPosition);
html.data('previous-overflow', html.css('overflow'));
html.css('overflow', 'hidden');
window.scrollTo(scrollPosition[0], scrollPosition[1]);
// un-lock scroll position
var html = jQuery('html');
var scrollPosition = html.data('scroll-position');
html.css('overflow', html.data('previous-overflow'));
window.scrollTo(scrollPosition[0], scrollPosition[1])
发布于 2013-06-25 17:27:40
这将完全禁用滚动:
$('html, body').css({
overflow: 'hidden',
height: '100%'
});
要恢复,请执行以下操作:
$('html, body').css({
overflow: 'auto',
height: 'auto'
});
在Firefox和Chrome上进行了测试。
发布于 2014-06-20 16:07:33
尝尝这个
$('#element').on('scroll touchmove mousewheel', function(e){
e.preventDefault();
e.stopPropagation();
return false;
})
https://stackoverflow.com/questions/3656592
复制相似问题