如何禁用滚动文档正文?

Posted

技术标签:

【中文标题】如何禁用滚动文档正文?【英文标题】:How to disable scrolling the document body? 【发布时间】:2011-01-28 23:56:46 【问题描述】:

我有一个包含大量内容的 html,一旦加载 HTML,就会出现一个垂直滚动条。现在从这个 HTML 加载一个全屏 IFRAME。问题是加载 IFRAME 时,父滚动条仍然存在,我想在加载 IFRAME 时禁用滚动条。

我试过了:

document.body.scroll = "no",它不适用于 FF 和 chrome。 document.style.overflow = "hidden"; 在此之后我仍然可以滚动,整个 iframe 会向上滚动显示父 HTML。

我的要求是,当加载 IFRAME 时,如果父 HTML 有滚动条,我们永远不能滚动整个 IFRAME。

有什么想法吗?

【问题讨论】:

【参考方案1】:

如果您想使用 iframe 的滚动条而不是父级的滚动条,请使用:

document.body.style.overflow = 'hidden';

如果你想使用父级的滚动条而不是 iframe 的,那么你需要使用:

document.getElementById('your_iframes_id').scrolling = 'no';

或在 iframe 的标签中设置scrolling="no" 属性:<iframe src="some_url" scrolling="no">

【讨论】:

除非请在样式表中而不是在 javascript 中执行此操作 :-) 感谢您的意见。我做错了,它按说明工作。【参考方案2】:

用css

body, html 
  overflow: hidden

【讨论】:

【参考方案3】:

以下 JavaScript 可以工作:

var page = $doc.getElementsByTagName('body')[0];

禁用滚动使用:

page.classList.add('noscroll');

启用滚动使用:

page.classList.remove('noscroll');

在 CSS 文件中,添加:

.noscroll 
    position: fixed!important

【讨论】:

位置:固定;是我的解决方案 请注意,当使用 position: fixed 时,body 的滚动位置会移动到顶部,这可能会令人不安 不错的解决方案,确保将body width设置为100%,否则body会被折叠。【参考方案4】:

添加这个css

body.disable-scroll 
    overflow: hidden;

以及何时禁用运行此代码

$("body").addClass("disable-scroll");

以及何时启用运行此代码

$("body").removeClass("disable-scroll")

【讨论】:

【参考方案5】:

我知道这是一个古老的问题,但我只是想我会参与进来。

我正在使用disableScroll。简单,它就像在梦中一样工作。

我在禁用 body 滚动时遇到了一些问题,但在子元素(如模式或侧边栏)上允许滚动。看起来可以使用disableScroll.on([element], [options]); 完成某些操作,但我还没有让它工作。


与 body 上的 overflow: hidden; 相比,它更受欢迎的原因是溢出隐藏可能会变得讨厌,因为有些东西可能会像这样添加 overflow: hidden;

... 这对预加载器等很有用,因为它是在 CSS 完成加载之前呈现的。

但是当一个打开的导航应该将一个类添加到body-tag(如<body class="body__nav-open">)时,它会出现问题。然后它变成了与overflow: hidden; !important 和各种废话的一场大拔河。

【讨论】:

【参考方案6】:

回答: document.body.scroll = '否';

【讨论】:

这仅适用于 IE,因此不建议用于项目。

以上是关于如何禁用滚动文档正文?的主要内容,如果未能解决你的问题,请参考以下文章

仅当模式打开 IOS 时如何禁用正文滚动

css HTML,CSS - 禁用正文滚动

Ipad iOS 滚动不一致:禁用正文滚动但允许在某些元素上滚动

css 打开模态上的bootstrap,禁用正文滚动

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

js中如何禁用鼠标滚轮事件?急,在线等!