zoukankan      html  css  js  c++  java
  • python测试开发django-123.bootstrap模态框(modal)垂直居中显示

    前言

    bootstrap 模态框默认会在屏幕顶端显示,跟我们的操作习惯不太符合,我们期望显示到屏幕垂直居中的位置。
    在最新的 bootstrap4 版本中可以在<div class="modal-dialog"> 上加一个 modal-dialog-centered 属性,来垂直居中显示。
    但是大部分用的是bootstrap3 版本,需要自己写javascript脚本来调整位置。

    bootstrap3 版本

    bootstrap模态框默认会在屏幕顶端显示,位置太靠上了。

    bootstrap3 版本,需要自己写 javascript 脚本来调整位置。

    • show.bs.modal 在调用 show 方法后触发。
    • shown.bs.modal 当模态框对用户可见时触发(将等待 CSS 过渡效果完成)。
    • hide.bs.modal 当调用 hide 实例方法时触发。
    • hidden.bs.modal 当模态框完全对用户隐藏时触发。
    // 作者-上海悠悠 QQ交流群:717225969
    // blog地址 https://www.cnblogs.com/yoyoketang/
    
    <script>
        $('#myModal').on('show.bs.modal', function (e) {
                var modalHeight=$(window).height() / 2 - $('#myModal .modal-dialog').height() / 2;
                $(this).find('.modal-dialog').css({
                    'margin-top': modalHeight
                });
            });
    </script>
    

    实现效果

    如果想显示在屏幕正中间往上一点的位置,可以通过modalHeight的值控制,比如正中间往上100个像素

    var modalHeight=$(window).height() / 2 - $('#myModal .modal-dialog').height() / 2 - 100;
    

    设置css让modal 垂直居中

    vertical-align:middle 的居中是基于 line-heigh t的,但 line-height:100%; 是相对于字体尺寸的,没法达到模态框居中效果。
    在居中的对象后面加一个高度100%的 :after 伪类,两者都 display:inline-block; vertical-align:middle;
    也就相当于要居中的对象要和一个高度 100% 的对象中线对齐,:after对象因为没有宽度,所以不占用空间,从达到了垂直居中的目的。

        <style>
        /* 模态框居中样式 */
        .modal{
            text-align: center;
        }
        .modal:after {
            display: inline-block;
            height: 100%;
            margin-left: -0.05em;
            content: "";
            vertical-align: middle;
        }
        .modal-dialog {
            text-align: left;
            display: inline-block;
            vertical-align: middle;
        }
        </style>
    

    bootstrap4 版本

    bootstrap4 版本可以在<div class="modal-dialog"> 上加一个 modal-dialog-centered 属性,来垂直居中显示。

  • 相关阅读:
    perl 监控mysql数据库
    17.3Replication Solutions
    java.sql.SQLException: Can not issue data manipulation statements with executeQuery().
    java.sql.SQLException: Can not issue empty query.
    [2015-06-10 20:53:50
    mysqldump --flush-logs
    Caused by: com.mysql.jdbc.MysqlDataTruncation: Data truncation: Truncated incorrect DOUBLE value: 'L
    Error Code: 1414. OUT or INOUT argument 2 for routine company.new_procedure is not a variable or NEW
    Deadlock found when trying to get lock; try restarting transaction
    java.text.ParseException: Unparseable date: "2015-06-09 hh:56:19"
  • 原文地址:https://www.cnblogs.com/yoyoketang/p/15250413.html
Copyright © 2011-2022 走看看