Bootstrap 3 – 根据屏幕大小设置模态窗口的高度
我正在尝试使用Bootstrap 3模式对话框创build一种响应式megamenu。 我想将整个模式窗口的宽度和高度设置为视口的80%,同时将模态主体设置为最大高度,以便不在大视口上填充整个屏幕。
我的HTML:
<div class="modal fade"> <div class="modal-dialog modal-megamenu"> <div class="modal-content"> <div class="modal-header"> <button type="button" class="close" data-dismiss="modal" aria-hidden="true">x</button> <h4 class="modal-title">Modal Mega Menu Test</h4> </div> <div class="modal-body"> <div class="row"> <div class="col-md-3"></div> <div class="col-md-3"></div> <div class="col-md-3"></div> <div class="col-md-3"></div> </div> </div> </div> <div class="modal-footer"> <button type="button" data-dismiss="modal" class="btn btn-primary">close</button> </div> </div> </div>
我的CSS:
.modal-megamenu { width:80%; height:80%; } .modal-body { max-height:500px; overflow:auto; }
这可以像宽度那样工作,但“高度”参数不会给出任何结果。 像这样,模态窗口的高度始终设置为最大高度值。 有没有人有一个如何根据视口高度dynamic设置高度的想法?
与Bass类似,我也必须设置overflow-y。 这实际上可以在CSS中完成
$('#myModal').on('show.bs.modal', function () { $('.modal .modal-body').css('overflow-y', 'auto'); $('.modal .modal-body').css('max-height', $(window).height() * 0.7); });
尝试:
$('#myModal').on('show.bs.modal', function () { $('.modal-content').css('height',$( window ).height()*0.8); });
纯粹的CSS解决scheme,使用calc
.modal-body { max-height: calc(100vh - 200px); overflow-y: auto; }
200px可以根据页眉和页脚的高度进行调整
为了扩大Ryand的答案,如果你使用的是Bootstrap.ui,那么在你的模式实例上就可以做到这一点:
modalInstance.rendered.then(function (result) { $('.modal .modal-body').css('overflow-y', 'auto'); $('.modal .modal-body').css('max-height', $(window).height() * 0.7); $('.modal .modal-body').css('height', $(window).height() * 0.7); });
我假设你想在手机上使用尽可能多的屏幕空间。 我已经做了一个插件来解决在手机上引导模式这个用户体验问题,你可以在这里查看 – https://github.com/keaukraine/bootstrap-fs-modal
所有你需要做的就是应用modal-fullscreen
类,它将起到类似于iOS / Android本地屏幕的作用。