【问题标题】:How do I make the background of a modal clickable?如何使模态的背景可点击?
【发布时间】:2016-05-01 15:23:45
【问题描述】:

我想创建一个可以插入网站的聊天框。我一直在使用 Bootstrap Modal 来实现这一点。

我希望当用户在模态框外点击时我的模态框不会关闭。但是网站背景应该仍然是可点击/可选择的,这样用户仍然可以在网站上进行操作。

这是我目前写的代码。

$(window).load(function () {
  $('#myModal').modal({ backdrop: 'static', keyboard: false});
  $('#myModal').modal('show');
});
function myFunction() {
  $('#myModal').modal('toggle');
  window.alert('Hello');
}
.vertical-alignment-helper {
  display:table;
  height: 100%;
  width: 100%;
  pointer-events:none; /* This makes sure that we can still click outside of the modal to close it */
}
.vertical-align-center {
  /* To center vertically */
  display: table-cell;
  vertical-align: middle;
  pointer-events:none;
}
.modal-content {
  /* Bootstrap sets the size of the modal in the modal-dialog class, we need to inherit it */
  width:inherit;
  height:inherit;
  /* To center horizontally */
  margin: 0 auto;
  pointer-events: all;
  float: left;
  max-width: 250px;
  background-color: #ffffff;
}

.textarea-nonresizable {
  height: 10em;
  border-radius: 1em;
  outline: none; /* removes the default outline */
  resize: none; /* prevents the user-resizing, adjust to taste */
}

.header-cl {
  background-color: #262626;
  color: #FFFFFF;
  border-bottom-width: 0px;
}

.header-f {
  font-size: 14px;
  font-weight: bold;
}

.body-cl {
  background-color: #c7c8c9;
}

.foot-cl {
  border-top-width: 0px;
  padding-top: 0px;
  background-color: #c7c8c9;
  color: #FFFFFF;
}
.btn-ft {
  background-color: #3f1603;
  color: #FFFFFF;
}
.btn-primary:hover, .btn-primary:focus, .btn-primary:active, .btn-primary.active, .open>.dropdown-toggle.btn-primary {
  color: #FFFFFF;
  background-color: #3f1603;
}
<link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script>
<script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>

<div class="modal fade " id="myModal" role="dialog">
  <div class="vertical-alignment-helper">
    <div class="modal-dialog vertical-align-center modal-sm">
      <div class="modal-content">
        <div class="modal-header header-cl">
          <button type="button" class="close" data-dismiss="modal" aria-label="Close">
            <span class="glyphicon glyphicon-minus-sign"></span>
          </button>
          <h4 class="modal-title header-f">Contact Us</h4>
        </div>
        <div class="modal-body body-cl">
          <textarea class="form-control textarea-nonresizable" id="comment" placeholder="Type your message here"></textarea>
        </div>
        <div class="modal-footer foot-cl">
          <div style="float:left;color:#FFFFFF;font-size: 11px;line-height: 34px;">
            Powered by <strong>Stackoverflow</strong> </div>
          <button type="button" class="btn btn-primary btn-ft" onclick="myFunction()">Start Text</button>
        </div>
      </div>
    </div><!-- /.modal-content -->
  </div><!-- /.modal-dialog -->
</div><!-- /.modal -->

【问题讨论】:

    标签: javascript jquery html css twitter-bootstrap


    【解决方案1】:

    您可以在.modal.modal-backdrop 上使用pointer-events: none;。或者用display: none;隐藏.modal-backdrop

    .modal {
        pointer-events: none;
    }
    .modal-backdrop {
        display: none;
    }
    

    EXAMPLE

    说实话,如果你要对 bootstrap modal 的功能进行这么多的修改,你还不如只使用一个固定位置的自定义元素,而不是试图与 Bootstrap CSS 对抗。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-09-03
      • 1970-01-01
      • 1970-01-01
      • 2011-05-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多