打开模态时无法滚动。

时间:2016-08-19 19:36:11

标签: javascript jquery css

当用户选择模态的链接时,隐藏了正文溢出,但即使我将模态作为溢出:auto,也会隐藏模态的滚动。我希望模态能够滚动而不会覆盖后面的内容滚动。

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

2 个答案:

答案 0 :(得分:0)

如果您想要滚动身体,只需删除

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

如果您希望模式本身向下移动屏幕,则您需要添加占据整个页面的外部div并将overflow: scroll应用于该页面。

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

答案 1 :(得分:0)

执行此操作的一种好方法是为顶部,底部,左侧和右侧设置固定值,删除宽度值。然后你可以放心,你的模态总是居中并且最适合屏幕大小,当然,你不会在屏幕外推动你的滚动条。

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

您还可以保持宽度固定并将margin-left和margin-right设置为auto,前提是所有容器元素都设置了某种宽度,以便浏览器可以实际计算边距。

简单小提琴here