【问题标题】:Bootstrap modal responsive vertical centering?Bootstrap模态响应垂直居中?
【发布时间】:2014-03-07 14:26:09
【问题描述】:

如何将引导模式垂直居中?我在这里四处寻找解决方案,但它们没有响应,或者根本不工作。我正在使用 Bootsrap 3。

模式不再响应较小的屏幕或在使用以下解决方案后调整浏览器窗口大小时。

jquery,

$('.modal').on('shown.bs.modal', function() {
            $(this).find('.modal-dialog').css({
                'margin-top': function () {
                    return -($(this).outerHeight() / 2);
                },
                'margin-left': function () {
                    return -($(this).outerWidth() / 2);
                }
            });
        });

CSS,

.modal-dialog {
        margin: 0;
        position: absolute;
        top: 50%;
        left: 50%;
    }

引导,

<!-- Button trigger modal -->
<button class="btn btn-primary btn-lg" data-toggle="modal" data-target="#myModal">
  Launch demo modal
</button>

<!-- Modal -->
<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true" data-backdrop="false">
  <div class="modal-dialog custom-class">
    <div class="modal-content">
      <div class="modal-header">
        <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
        <h4 class="modal-title" id="myModalLabel">Modal title</h4>
      </div>
      <div class="modal-body">
        ...
      </div>
      <div class="modal-footer">
        <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
        <button type="button" class="btn btn-primary">Save changes</button>
      </div>
    </div>
  </div>
</div>

有什么想法吗?

编辑:

我用这个 css 试过了,

@media screen and (min-width: 768px) {
        .custom-class {
            width: 800px; /* either % (e.g. 60%) or px (400px) */
            top: 25%;
        }
    }

模态框只是回到小屏幕上的默认位置,但我希望它垂直居中。

另外,top: 25%; 根本不会使其完全垂直居中。

【问题讨论】:

标签: javascript jquery html css twitter-bootstrap


【解决方案1】:

我想就是这样,

CSS,

.modal-dialog {
        top: 0;
        margin-top:0;
        display: none;
        border:1px solid red;
    }

jquery + 引导,

$('#myModal').on('shown.bs.modal', function (e) {

            var object = $('.modal-dialog');
            var object_outerheight = object.outerHeight();
            var window_height = $(window).height();
            var window_scrolltop = $(window).scrollTop();
            var object_top = ((window_height - object_outerheight)/2) + window_scrolltop;
            console.log(object_top);

            // Set the object's position.
            object.css({
                marginTop: object_top + 'px'
            }).fadeIn();

            // Add responsive when the window is being resized.
            $( window ).resize(function() {

                // Redo the calc on each resize's action.
                var window_height = $(window).height();
                var window_scrolltop = $(window).scrollTop();
                var object_top = ((window_height - object_outerheight)/2) + window_scrolltop;
                console.log(object_top);

                // Reset the object's position.
                object.css({
                    marginTop: object_top + 'px'
                });

            });
        });

【讨论】:

  • var window_scrolltop = $(window).scrollTop(); 如果我一直点击页面下方的按钮(我的模式一直出现在我的页面下方,我不得不滚动到很远的地方),这对我来说做得很糟糕,所以我删除了这一行(以及下一行的+ window_scrolltop)。我还向 margin_top 添加了一个检查,以不低于零。 (因为我的模态顶部在非常小的屏幕尺寸上从我的屏幕上掉下来)否则:谢谢你的回答!
【解决方案2】:

使用 css 我们可以将 Bootstrap modal 放置在垂直中心。

    .modal {
        text-align: center;
        padding: 0!important;
    }

    .modal:before {
        content: '';
        display: inline-block;
        vertical-align: middle;
        margin: -2px;
        height: 100%;
    }

    .modal-dialog {
        display: inline-block;
        vertical-align: middle;
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-10-17
    • 2013-10-03
    • 1970-01-01
    • 2016-06-12
    • 2021-02-28
    • 2013-03-04
    • 2014-09-02
    • 2014-03-05
    相关资源
    最近更新 更多