如果高度超过浏览器,则设置Bootstrap模式内容以滚动

时间:2016-08-22 23:19:31

标签: twitter-bootstrap

我见过很多人都在问这个问题,但没有真正可靠的答案。

如果模态的高度超过了浏览器的内部高度,我希望红边的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;
&#13;
&#13;

3 个答案:

答案 0 :(得分:4)

对于Bootstrap版本&gt; = 4.3

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">&times;</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>


对于Bootstrap版本&lt; 4.3(旧答案)

您可以使用overflow-y:autoenter image description here执行此操作。将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;
}