2016-08-18 10 views
2

モダールが表示されている場合、bodyタグにoverflow: hoddenのクラスを追加します。したがって、モーダルの背後にあるコンテンツはスクロールしません。すべてが良いです。オーバーフローを設定する方法:非表示にしてもスクロールバーを表示させますか?

しかし

元のページがスクロールバーを持ってするのに十分な大きさであるならば、私は、モーダルを開くと、私は、右ページの醜いシフトを見ることができます。私はそのような行動の理由を見つけます。 Overflow: hiddenは、スクロールバーが消えてしまうので、右に10pxシフトするのがその理由です。

私の質問はこれを解決する方法です。実際、overflow:hiddenを適用する必要がありますが、まだスクロールバーが表示されています。

+0

可能な場合は、JSFiddleにHTMLとCSSを含めることができますか? – Roberrrt

+0

@Roberrrtどのようなコードが必要ですか?私はMeteor + Reactで自分のアプリを持っていますが、コードは不必要です。私の質問は十分説明されています。 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

あなたのasnwerに感謝します!問題は私がモーダルの内容をスクロールできるようにする必要があることです。あなたのソリューションでは、スクロールは全く無効になっています。可能なユースケースは 'window.pageYOffset'で現在のY座標を取得し、' position:fixed'と 'top:currentY px'を設定することです。しかし、 'overflow:hidden'でこれを行う方がはるかに簡単です。そのため、私はスクロールバーの可視性について知りたいのです。 –

関連する問題