簡體   English   中英

如何禁用滾動文檔正文?

[英]How to disable scrolling the document body?

我有一個包含大量內容的 HTML,一旦加載 HTML,就會出現一個垂直滾動條。 現在從這個 HTML 加載全屏 IFRAME。 問題是加載 IFRAME 時,父滾動條仍然存在,我想在加載 Iframe 時禁用滾動條。

我試過:

  • document.body.scroll = "no" ,它不適用於 FF 和 chrome。
  • document.style.overflow = "hidden"; 在此之后,我仍然能夠滾動,並且整個 iframe 將向上滾動以顯示父 HTML。

我的要求是,當 IFRAME 加載時,如果父 HTML 有滾動條,我們應該永遠無法滾動整個 IFRAME。

有任何想法嗎?

如果您想使用 iframe 的滾動條而不是父級的滾動條,請使用:

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

如果要使用父滾動條而不是 iframe 的滾動條,則需要使用:

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

或者在 iframe 的標簽中設置scrolling="no"屬性: <iframe src="some_url" scrolling="no">

用CSS

body, html {
  overflow: hidden
}

以下 JavaScript 可以工作:

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

要禁用滾動使用:

page.classList.add('noscroll');

要啟用滾動使用:

page.classList.remove('noscroll');

在 CSS 文件中,添加:

.noscroll {
    position: fixed!important
}

添加這個css

body.disable-scroll {
    overflow: hidden;
}

以及何時禁用運行此代碼

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

以及何時啟用運行此代碼

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

我知道這是一個古老的問題,但我只是想我會權衡一下。

我正在使用disableScroll 簡單,就像在做夢一樣。

我在禁用 body 上的滾動時遇到了一些麻煩,但在子元素(如模式或側邊欄)上允許它。 看起來可以使用disableScroll.on([element], [options]);來完成某些事情disableScroll.on([element], [options]); ,但我還沒有讓它起作用。


overflow: hidden;相比,這是首選的原因overflow: hidden; 在身體上,溢出隱藏會變得令人討厭,因為有些東西可能會添加overflow: hidden; 像這樣:

... 這對預加載器等很有用,因為它是在 CSS 完成加載之前呈現的。

但是它會出現問題,當打開導航應該向body -tag 添加一個類時(例如<body class="body__nav-open"> )。 然后它變成了一場帶有overflow: hidden; !important大型拔河overflow: hidden; !important overflow: hidden; !important和各種廢話。

答案:document.body.scroll = 'no';

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM