2016-08-18 90 views
2

當顯示模態時,我會將一個帶有overflow: hodden的類添加到body標籤。所以模式背後的內容不會滾動。一切都很好。如何設置溢出:隱藏但仍使滾動條可見?

如果原來的頁面是足夠大,有一個滾動條,然後我可以看到頁面的醜陋右移,當我打開模式。我找出了這種行爲的原因。 Overflow: hidden會導致滾動條消失,所以這就是爲什麼它向右移動約10px。

我的問題是如何解決這個問題。實際上,我需要應用overflow:hidden,但仍然顯示滾動條。

+0

你可以包括你的HTML和CSS(如果可能在JSFiddle中)? – Roberrrt

+0

@Roberrrt你需要什麼樣的代碼?我在Meteor + React中有我的應用程序,但是任何代碼都是不需要的,我的問題已經解釋得很好。可能是'showModal(){$('body').css('overflow','hidden');}'和'closeModal(){$('body').css('overflow','auto ');}'。但你真的不需要那個。我想你不明白這個問題。 –

+0

我的不好,我確實誤解了你的問題,我提供了一個(可能的)解決方案,讓我知道它是如何結束的! – Roberrrt

回答

0

(function() { 
 
\t let _scrollPosition; 
 

 
\t function preventScroll(e) { 
 
\t \t e.preventDefault(); 
 
\t \t window.scroll(..._scrollPosition); 
 
\t } 
 

 
\t function lock() { 
 
\t \t _scrollPosition = [window.pageXOffset, window.pageYOffset]; 
 
\t \t $(window).on('scroll touchmove', preventScroll); 
 
\t } 
 

 
\t function unlock() { 
 
\t \t $(window).off('scroll touchmove', preventScroll); 
 
\t } 
 

 
\t return { 
 
\t \t lock, 
 
\t \t unlock 
 
\t }; 
 
})();

爲您打開模式與此代碼,你可以只想儘快鎖定滾動位置。

+0

感謝您的關注!問題是我需要用戶能夠滾動模態的內容。在你的解決方案中,滾動功能是完全禁用的。可能的用例是使用'window.pageYOffset'獲取當前Y座標,然後設置'position:fixed'和'top:currentY px'。但是用'overflow:hidden'這樣做更容易,這就是爲什麼我想了解滾動條可見性的原因。 –

相關問題