2016-08-18 114 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'这样做更容易,这就是为什么我想了解滚动条可见性的原因。 –

相关问题