2016-08-19 24 views
0

ユーザーがモーダルのリンクを選択すると、ボディのオーバーフローが隠されますが、モーダルがオーバーフロー:自動である場合でも、モーダルのスクロールは非表示になります。モーダルはスクロールするオーバーレイの背後にあるものを使わずにスクロールできるようにしたいと思います。モーダルが開いているときにスクロールできません。

HTML

<a>View Proposal Details</a> 
<div class='popup'> 
<div class="popup-body"> 
       Lorem ipsum dolor sit amet, consectetur adipiscing elit.  Nulla lobortis quis mauris tristique rutrum. Suspendisse nisi turpis, pharetra porta porta eu, interdum ac eros. Praesent nisl nunc, laoreet ut consectetur sed, interdum ac ligula. Aliquam sit amet efficitur velit. Donec malesuada nec est ac feugiat. Nam gravida ornare volutpat. Vivamus ipsum mi, laoreet sed mattis id, rutrum sit amet massa. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. 

Nullam congue auctor ligula at venenatis. Integer varius tortor quis lacus luctus, vel dignissim leo tincidunt. Aliquam eleifend cursus vulputate. Sed vitae dolor at elit porta tristique. In quam arcu, posuere ac lorem nec, finibus imperdiet nibh. Etiam eu tincidunt metus, nec tristique eros. Nullam tempor lorem sed sapien scelerisque, nec rutrum risus tempor. Sed blandit ipsum accumsan ipsum porta consectetur. Curabitur imperdiet justo non purus euismod blandit. Ut cursus dolor mauris, vitae sagittis nisl sagittis at. Sed in feugiat nisi. Pellentesque egestas mi a mi dictum, vel posuere risus malesuada. Etiam tincidunt volutpat neque, vel lobortis orci tristique in. In hac habitasse platea dictumst. Nullam sed rutrum orci. 

Proin pellentesque arcu ut justo ullamcorper dignissim. Sed eget enim sed nibh convallis maximus ac ac odio. In tortor risus, luctus sit amet enim non, luctus faucibus leo. Nulla nec mauris vitae mauris tincidunt mollis nec sit amet velit. Proin gravida neque eu eros blandit vulputate. Fusce tristique interdum scelerisque. 
      Donec vel laoreet nunc, in tristique risus. Phasellus ultrices orci mi, eget imperdiet libero ultrices quis. Phasellus iaculis, ante et dictum mollis, est ipsum feugiat turpis, condimentum sagittis ligula diam a erat. Donec porta, magna sit amet pellentesque pharetra, erat turpis semper lorem, ac varius metus arcu et felis. Vestibulum facilisis ac lorem ut blandit. 


      </div> 
     </div> 

CSS

.popup { position:fixed;z-index:8;left:31%;width:625px;padding:0;top:70px;background:#fff;overflow:auto;display:none;box-shadow:5px 5px 10px 0 rgba(0,0,0,0.25)} 

jQueryの

function opendialog(container) { 
$(container).fadeIn(); //open 
if($(container).height() < $(window).height()) { //centralize vertically 
    $(container).css({ 
     'top':'50%', 
     'margin-top':'-'+$(container).height()/2+'px' 
    }); 
} else { 
    $(container).css('position','absolute'); 
} 
$('.overlay').fadeIn(); 
} 

$('.cancel').click(function(){ //close clicking on overlay, close button and cancel button 
    $('body').css('overflow', 'auto'); 
    closedialog(); 
}) 
$('a').click(function(){ 
$('body').css('overflow', 'hidden');  
    opendialog('.popup'); 
}) 

答えて

0

あなたは体がスクロールしたい場合は、単に行を削除

$('body').css('overflow', 'hidden');  

モーダル自体を画面下に移動させたい場合は、ページ全体を占める外側のdivを追加し、overflow: scrollをそれに適用するとよいでしょう。

<div id="popup-outer"> 
    <div id="popup">[...]</div> 
</div> 
+0

答えが更新されました。 –

+1

これを例として使用してください - http://codepen.io/anon/pen/xZBovY - 私はスクロールアクションが正確にこれに似ていることを望みます。しかし、私のバニラJSだけではなく、全く異なった建物です。 – userlkjsflkdsvm

0

これを行うには、top、bottom、left、rightの固定値を設定し、widthの値を削除するのが良い方法です。次に、モーダルが常に画面の中央に配置され、最適なサイズに設定されていることを確認できます。もちろん、スクロールバーを画面外にずらすことはありません。あなたはまた、autoに幅固定とセットマージン左マージン右を保つことができる

.popup { 
    display: none; 
    position: fixed; 
    z-index: 8; 
    top: 70px; 
    bottom: 20px; 
    left: 20px; 
    right: 20px; 
    padding: 0; 
    background: #fff; 
    overflow: auto; 
    box-shadow: 5px 5px 10px 0 rgba(0, 0, 0, 0.25) 
} 

は、ブラウザが実際にマージンを計算することができように、すべてのコンテナ要素は、幅セットのいくつかの並べ替えを持っていることを条件とします。

単純なフィドルhere

関連する問題