我见过很多人都在问这个问题,但没有真正可靠的答案。
如果模态的高度超过了浏览器的内部高度,我希望红边的Div有一个滚动条,以便在浏览器视图中保留模态。
#scrollbox {
border: 1px solid red;
}

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css">
<script src="//maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>
<input type="button" data-toggle="modal" data-target="#myModal" value="Launch Modal">
<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-body">
Hello, below is some text in a div that should start scrolling if the height of the modal exceeds the browser.
<p><div id="scrollbox">
the<br>quick<br>brown<br>fox<br>
the<br>quick<br>brown<br>fox<br>
the<br>quick<br>brown<br>fox<br>
the<br>quick<br>brown<br>fox<br>
the<br>quick<br>brown<br>fox<br>
the<br>quick<br>brown<br>fox<br>
the<br>quick<br>brown<br>fox<br>
the<br>quick<br>brown<br>fox<br>
the<br>quick<br>brown<br>fox<br>
the<br>quick<br>brown<br>fox<br>
</div>
</div>
</div>
</div>
</div>
&#13;
答案 0 :(得分:4)
Bootstrap 4.3为模态添加了新的滚动功能。如果内容的大小会使页面滚动,则仅使模态主体内容滚动。这可能对OP的情况不起作用,因为它们在模态体中有其他内容,但它可能对其他人有帮助。要使用它,只需将类模态对话框可滚动添加到具有模态对话框类的同一div中。
以下是一个例子:
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.bundle.min.js"></script>
<link href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" rel="stylesheet"/>
<!-- Button trigger modal -->
<button type="button" class="btn btn-primary" data-toggle="modal" data-target="#exampleModalScrollable">
Launch demo modal
</button>
<!-- Modal -->
<div class="modal fade" id="exampleModalScrollable" tabindex="-1" role="dialog" aria-labelledby="exampleModalScrollableTitle" aria-hidden="true">
<div class="modal-dialog modal-dialog-scrollable" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="exampleModalScrollableTitle">Modal title</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>
<div class="modal-body">
the<br>quick<br>brown<br>fox<br>
the<br>quick<br>brown<br>fox<br>
the<br>quick<br>brown<br>fox<br>
the<br>quick<br>brown<br>fox<br>
the<br>quick<br>brown<br>fox<br>
the<br>quick<br>brown<br>fox<br>
the<br>quick<br>brown<br>fox<br>
the<br>quick<br>brown<br>fox<br>
the<br>quick<br>brown<br>fox<br>
the<br>quick<br>brown<br>fox<br>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
<button type="button" class="btn btn-primary">Save changes</button>
</div>
</div>
</div>
</div>
您可以使用overflow-y:auto
和执行此操作。将max-height
的{{1}}属性设置为scrollbox
(完整视口高度)并减去一些任意数量的像素,以便考虑100vh
之外的所有内容(您要保留的内容)在视口内)。然后添加scrollbox
规则,以便在内容超过overflow-y:auto
时,会显示滚动条。除了使用CSS而不是jQuery之外,这与vh units非常相似。
max-height
#scrollbox {
border: 1px solid red;
overflow-y: auto;
max-height: calc(100vh - 150px);
}
答案 1 :(得分:3)
您可以使用 jquery 在基础中将 max-height 设置为窗口的高度,我会在以下情况下使用此代码:
Jquery的:
<script>
$(function() {
// Get the height of the window
var height = $(window).height();
$('#scrollbox').css('max-height', height+'px');
});
</script>
如果需要,可以将像素减去窗口的高度,例如我想将100px减去窗口的高度:
var height = ($(window).height() - 100);
的CSS:
#scrollbox{
overflow-y: auto;
}
我希望会有所帮助。
问候!
答案 2 :(得分:0)
我将此css添加到了我的项目中,现在我拥有了引导模态,可以在它们过长时进行滚动。
.modal {
overflow-x: hidden;
overflow-y: auto;
}