当前位置: 首页 > 面试题库 >

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

裴星洲
2023-03-14
问题内容

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

我的想法是:

  1. body{ overflow: hidden;}
  2. 捕获当前 scrollTop();/scrollLeft()
  3. 绑定到正文滚动事件,将scrollTop / scrollLeft设置为捕获的值。

有没有更好的办法?

更新:

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

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


问题答案:

我发现执行此操作的唯一方法与您所描述的类似:

  1. 抓住当前滚动位置(不要忘记水平轴!)。
  2. 将溢出设置为隐藏(可能要保留以前的溢出值)。
  3. 使用scrollTo()将文档滚动到存储的滚动位置。

然后,当您准备允许再次滚动时,请撤消所有操作。

编辑:自从我费劲去挖掘它以来,没有理由我不能给你代码

// 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])


 类似资料:
  • 本文向大家介绍在iOS中以编程方式禁用滚动视图?,包括了在iOS中以编程方式禁用滚动视图?的使用技巧和注意事项,需要的朋友参考一下 滚动视图是iOS开发人员遇到的最困难和最复杂的主题之一。在这里,我们将看到如何以编程方式禁用滚动视图。 要禁用它,我们需要使滚动视图的“ isScrollEnabled”属性为false。 将以下代码复制到文件中。

  • 是否有一种编程(基于属性)的方法在Spring引导(1.2.2)中禁用RabbitAutoConfiguration。 看起来像Spring。rabbitmq。dynamic=false仅禁用AmqpAdmin,而不禁用连接工厂等。 我们想要一个模型,其中应用程序属性可以来自Spring Cloud config(包括控制总线)或通过-D jvm args。这个决定是在部署时做出的。当属性来自-D

  • 问题内容: 我想以编程方式禁用硬件预取。 从使用硬件实现的预取器在英特尔®酷睿™微体系结构上优化应用程序性能以及 如何在32位英特尔®架构上的硬件和软件预取之间进行选择,我需要更新MSR以禁用硬件预取。 以下是相关片段: “通过编写用于更改 寄存器中位的设备驱动程序实用程序,还可以通过编程方式更改DPL预取和L2流预取设置。这种实用程序提供了启用或禁用预取机制的能力,而无需任何服务器停机时间。 下

  • 问题内容: 我有一个带有用于内容的内部DIV的HTML页面。内部DIV有自己的滚动条。我想自动滚动到DIV中的某个位置。 我怎样才能做到这一点?(请注意,我不想自动滚动“窗口”滚动条-我已经知道如何执行此操作) 需要跨平台解决方案 问题答案: div具有您可以设置的属性(及其pal,)。

  • 问题内容: 我有这个ajax事件 一切正常,但我想添加(如果可能)在ajax事件发生之前/完成时将整个页面(内容/正文)变成灰色的功能,就像它是模态的但没有对话框) 有办法吗? 提前致谢 问题答案: 一种方法是使用覆盖整个页面的overlay元素。如果overlay元素具有半透明的背景色,它将完全使页面变灰 给予较高的评价,使其位于所有其他元素之上。这样,它可以正确渲染,并且可以捕获所有事件(并且

  • 我正在开发一个应用程序,用户可以通过点击按钮启用/禁用移动网络。我在谷歌上搜索过这个问题,但我只得到了飞机模式的解决方案。在飞行模式下,WI-FI和蓝牙也被禁用。我不希望他们使用飞机模式的概念来禁用。我只想禁用移动网络。按语法实现它的可能方式是什么?