如何以编程方式禁用jQuery页面滚动

如何以编程方式禁用jQuery页面滚动

使用jQuery,我想禁用身体的滚动:

我的想法是:

  1. body{ overflow: hidden;}

  2. 捕捉电流

    scrollTop();/scrollLeft()

  3. 绑定到主体滚动事件,将滚动顶/滚动左侧设置为捕获的值。

有更好的办法吗?


最新情况:

请看看我的例子,以及为什么http://jsbin.com/ikuma4/2/edit

我知道有人会想“他为什么不position: fixed在面板上?“。

请不要提出这个建议,因为我有其他原因。


蝴蝶不菲
浏览 406回答 3
3回答

斯蒂芬大帝

我发现做这件事的唯一方法与你所描述的相似:抓取当前滚动位置(不要忘记水平轴!)将溢出设置为隐藏(可能希望保留以前的溢出值)。将文档滚动到已存储的滚动位置,并使用SCROLLTO()。当你准备再次允许滚动时,撤销所有这些。编辑:没有理由我不能给你代码,因为我费尽心思去挖掘它.// lock scroll position, but retain settings for latervar 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 thathtml.data('scroll-position', scrollPosition);html.data('previous-overflow', html.css('overflow'));html.css('overflow', 'hidden');window.scrollTo(scrollPosition[0], scrollPosition[1]);// un-lock scroll positionvar html = jQuery('html');var scrollPosition = html.data('scroll-position');html.css('overflow', html.data('previous-overflow'));window.scrollTo(scrollPosition[0], scrollPosition[1])

长风秋雁

尝尝这个$('#element').on('scroll touchmove mousewheel', function(e){   e.preventDefault();   e.stopPropagation();   return false;})
打开App,查看更多内容
随时随地看视频慕课网APP