2011-06-20 12 views
7

如何在顯示對話框時暫時鎖定網頁的滾動?我有一個對話框,在該對話框中,我想要在從覆蓋網頁停用滾動之後啓用滾動如何鎖定網頁的臨時滾動?

是否有js命令暫時禁用滾動?

+0

檢查了這一點:http://stackoverflow.com/questions/3656592/programmatically-disable-scrolling –

回答

6

您可以使用瀏覽器窗口的寬度和高度來設置容器元素,或者甚至可以將主體設置爲overflow: hidden。這樣,任何溢出的內容都將脫離頁面,滾動條從不顯示。這可以在像body.dialog-open { overflow: hidden; }這樣的css語句中設置。然後可以在對話框打開和關閉時添加和刪除.dialog-open類名。如果設置這個對身體

寬度和高度可能不需要,但我不得不去檢查一個瀏覽器的兼容性。可能會有一些意想不到的結果。

編輯: 如果您想要在對話框中滾動,您可以在那裏設置overflow: auto,並在該元素上設置高度。

舊的瀏覽器(最明顯的是IE)可能會顯示一個水平滾動條,以及,你可能需要設置overflow-x: hidden如果是這樣的情況。

另見:CSS div element - how to show horizontal scroll bars only?關於滾動條的更多信息。

+0

也提防歌劇有一個老的bug causin忽略溢出:使用滾輪時隱藏。 (沒有簡單的解決方法要麼) –

+0

最初的網頁是滾動的,但只爲對話框isdisabled的時候,我想暫時禁用滾動,所以我想你溶膠。不會工作 –

+0

它會。您可以在對話框打開時將正文添加到正文中,並在關閉時將其刪除。將更新帖子添加此。 –

14

編輯試試這個:

在對話框打開(刪除滾動條,防止用戶從滾動):

$('body').css({'overflow':'hidden'}); 
    $(document).bind('scroll',function() { 
     window.scrollTo(0,0); 
    }); 

在對話框關閉(允許用戶重新滾動):

$(document).unbind('scroll'); 
    $('body').css({'overflow':'visible'});