【问题标题】:Make bootstrap modal draggable and keep background usable使引导模式可拖动并保持背景可用
【发布时间】:2017-12-17 03:50:33
【问题描述】:

我正在尝试使引导模式可拖动到页面上的任何位置,并且当模式打开时,我希望用户能够继续使用该页面。

我能够使用 jquery-ui 使模态可拖动,但我坚持在模态打开时使页面可用。用 CSS 尝试了几个建议,但没有一个能像我希望的那样工作。

这使页面可用,但模式仅限于页面的一部分:Bootstrap Modal - make background clickable without closing out modal

和这个一样:Enable background when open bootstrap modal popup

是否有可能通过引导模式来实现这一点?

这是我的 JS:

$('#btn1').click(function() {
    var modalDiv = $('#myModal');
    modalDiv.modal({backdrop: false, show: true});

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

JSFiddle 链接:https://jsfiddle.net/ntLpg6hw/1/

【问题讨论】:

  • jsfiddle.net/ntLpg6hw/2,你可能需要调整一些位
  • @Morpheus 使模态只能在页面的一小部分拖动,是否可以不限制拖动到特定位置而让用户将其拖动到任何他想要的地方?

标签: javascript jquery css twitter-bootstrap


【解决方案1】:

这真的很酷!

我认为你只需要一点 css。

#myModal {
  position: relative;
}

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

您还应该添加一些 jQuery 来重置按钮单击时的模态位置。

$('#btn1').click(function() {
  // reset modal if it isn't visible
  if (!($('.modal.in').length)) {
    $('.modal-dialog').css({
      top: 0,
      left: 0
    });
  }
  $('#myModal').modal({
    backdrop: false,
    show: true
  });

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

查看Fiddle


注意:Facebook 现在正在对外部新闻源视频做类似的事情。如果您在观看视频时滚动离开,它会变成拖放视频。

基本上,他们的视频弹出父容器是position: relative,而该容器的直接子容器是position: fixed。此处使用相同的策略。

【讨论】:

  • 太棒了! :) 我很高兴它有帮助
  • 按预期工作。非常感谢!
  • 任何想法如何在没有 jqery 的情况下实现这一点?
  • 我尝试了这个解决方案,它奏效了,谢谢。但是一个问题是,当您移动模态框时,它的一部分在视口之外时不会出现滚动条。可能是由于 position:fixed 元素,但是有什么想法可以修复这样滚动条会出现吗?
  • 拖动工作正常,但问题是它滞后。我的模态容器非常大,包含许多输入字段和其他数据。拖动时会滞后。我希望它以与鼠标相同的速度移动。
猜你喜欢
  • 1970-01-01
  • 2016-04-16
  • 2012-09-16
  • 1970-01-01
  • 2018-04-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多