打开模式时背景滚动条消失

时间:2018-12-14 10:25:49

标签: jquery html bootstrap-modal

我有一个页面,其中有一个浮动的可拖动模式,允许我在模式打开时访问背景。除了背景中的垂直滚动条消失以外,以下所有方法均起作用。如何使背景可滚动?

CSS

#myModal {
  position: relative;
}

.modal-dialog {
  position: fixed;
  width: 50%;
  margin: 0;
  padding: 10px;
}

HTML

<button id="openModal">Show Modal</button>
... lines of text ...

<!-- 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-header">
        <h4 class="modal-title" id="myModalLabel">Draggable Modal</h4>
      </div>
      <div class="modal-body">
        Modal Body
      </div>
      <div class="modal-footer">
        <button class="btn btn-default" data-dismiss="modal">Close</button>
      </div>
    </div>
  </div>
</div>

脚本

$('#openModal').click(function() {
  if (!($('.modal.in').length)) {
    $('.modal-dialog').css({
      top: 0,
      left: 0
    });
  }
  $('#myModal').modal({
    backdrop: false,
    show: true
  });

  $('.modal-dialog').draggable({
    handle: ".modal-header"
  });
});

https://jsfiddle.net/3c09qkag/

2 个答案:

答案 0 :(得分:1)

每次打开模态时,都会将.modal-open类添加到body标记中-并且该类包含overflow:hidden

可以通过添加以下内容来解决此问题:

.modal-open {
  overflow: inherit;
}

现在,您会发现打开Modal会突然滚动到底部;这也是为什么按钮在每次点击时都从视图中消失的原因。

您可能必须进一步尝试以防止发生滚动,这可能是因为div或其中的某些内容在显示为模式之前就已经得到了焦点。

答案 1 :(得分:1)

这可以解决所有问题,但我不知道它是否适合您的情况。您的情态应该处于相对位置吗?

由于默认情况下使其正常工作,因此该模式已修复。这样会阻止自动滚动到底部

https://jsfiddle.net/3c09qkag/12/

.modal-dialog {
  position: fixed;
  width: 50%;
  margin: 0;
  padding: 10px;
}

.modal-open {
  overflow: inherit;
}