2016-08-19 4 views
0

Wenn der Benutzer den Link für das Modal auswählt, ist der Körperüberlauf ausgeblendet, aber das Scrollen für das Modal ist auch dann ausgeblendet, wenn ich das Modal als Überlauf habe: auto. Ich möchte, dass das Modal in der Lage ist, zu scrollen, ohne dass sich hinter dem Overlay ein Bild befindet.Kann nicht scrollen, wenn Modal geöffnet ist.

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'); 
}) 

Antwort

0

Wenn Sie den Körper bewegen möchten, entfernen Sie einfach die Linie

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

Wenn Sie möchten, dass sich das Modal selbst auf dem Bildschirm nach unten bewegt, sollten Sie ein äußeres Div hinzufügen, das die gesamte Seite einnimmt und overflow: scroll darauf anwendet.

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

Aktualisierte Antwort. –

+1

Verwenden Sie dies als ein Beispiel - http://codepen.io/anon/pen/xZBovY - Ich möchte für die Scroll-Aktion genau so sein. Aber meine ist ganz anders gebaut und nicht nur mit Vanille JS. – userlkjsflkdsvm

0

Ein guter Weg, dies zu tun, ist, feste Werte für oben, unten, links und rechts festzulegen, den Wert für die Breite zu entfernen. Dann können Sie sicher sein, dass Ihr Modal immer zentriert und optimal für den Bildschirm dimensioniert ist, und natürlich werden Sie Ihre Bildlaufleiste nicht vom Bildschirm nach rechts schieben.

.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) 
} 

Sie können auch die Breite halten fixiert und eingestellt margin-left und margin-right auf auto vorausgesetzt, dass alle Containerelemente eine Art Breite festgelegt haben, so dass, dass der Browser die Ränder tatsächlich berechnen kann.

Einfache Geige here.

Verwandte Themen