1.使用modal 弹出事件方法;

未封装前:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title><link rel="stylesheet" href="css/bootstrap.min.css"><script src="js/jquery.min.js"></script><script src="js/bootstrap.js"></script>
</head>
<body><button type="button" id="modalBtn" class="btn btn-primary">点击弹出modal</button><div class="modal fade" id="myModal"><div class="modal-dialog"><div class="modal-content"><div class="modal-header"><button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button><h4 class="modal-title">Modal 标题</h4></div><div class="modal-body"><p>内容&hellip;</p><p>内容&hellip;</p><p>内容&hellip;</p></div><div class="modal-footer"><button type="button" class="btn btn-default" data-dismiss="modal">关闭</button><button type="button" class="btn btn-primary">确定</button></div></div></div>
</div><script type="text/javascript">$(function(){var $m_btn = $('#modalBtn');var $modal = $('#myModal');$m_btn.on('click', function(){$modal.modal({backdrop: 'static'});});$modal.on('show.bs.modal', function(){var $this = $(this);var $modal_dialog = $this.find('.modal-dialog');// 关键代码,如没将modal设置为 block,则$modala_dialog.height() 为零
            $this.css('display', 'block');$modal_dialog.css({'margin-top': Math.max(0, ($(window).height() - $modal_dialog.height()) / 2) });});});
</script></body>
</html>

封装后:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title><link rel="stylesheet" href="css/bootstrap.min.css"><script src="js/jquery.min.js"></script><script src="js/bootstrap.js"></script>
</head>
<body><button type="button" id="modalBtn" class="btn btn-primary">点击弹出modal</button><div class="modal fade" id="myModal"><div class="modal-dialog"><div class="modal-content"><div class="modal-header"><button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button><h4 class="modal-title">Modal 标题</h4></div><div class="modal-body"><p>内容&hellip;</p><p>内容&hellip;</p><p>内容&hellip;</p></div><div class="modal-footer"><button type="button" class="btn btn-default" data-dismiss="modal">关闭</button><button type="button" class="btn btn-primary">确定</button></div></div></div>
</div><script type="text/javascript">$(function(){$('#myModal').myfunction({$m_btn:$('#modalBtn'),  //触发事件元素
            $modal:$('#myModal'),   //响应事件元素
            eventType:'click'     //事件类型
        });});;(function ($) {$.fn.myfunction=function (options) {var defaults={$m_btn : $('#modalBtn'),$modal : $('#myModal'),eventType:'click'};var setting=$.extend({},defaults,options);this.each(function(){var my_btn = setting.$m_btn;var _modal = setting.$modal;var _event = setting.eventType;my_btn.on(_event, function(){_modal.modal({backdrop: 'static'});});_modal.on('show.bs.modal', function(){var $this = $(this);var $modal_dialog = $this.find('.modal-dialog');$this.css('display', 'block');$modal_dialog.css({'margin-top': Math.max(0, ($(window).height() - $modal_dialog.height()) / 2) });});});}})(jQuery);
</script></body>
</html>

2.修改bootstrap.js 源码;

打开bootstrap.js ctrl+f 找到 modal对应代码:

弹出框出现时, 调用的自然是 Modal.prototype.show() 方法, 而show 方法中又调用了 that.adjustDialog() 方法:

加上少量代码:

Modal.prototype.adjustDialog = function () {var modalIsOverflowing = this.$element[0].scrollHeight > document.documentElement.clientHeightthis.$element.css({paddingLeft:  !this.bodyIsOverflowing && modalIsOverflowing ? this.scrollbarWidth : '',paddingRight: this.bodyIsOverflowing && !modalIsOverflowing ? this.scrollbarWidth : ''})// 是弹出框居中。。。var $modal_dialog = $(this.$element[0]).find('.modal-dialog');var m_top = ( $(window).height() - $modal_dialog.height() )/2;$modal_dialog.css({'margin': m_top + 'px auto'});}

然后就实现modal垂直居中了, 效果图:

转载于:https://www.cnblogs.com/hjbky/p/7350523.html

bootstrap modal垂直居中(简单封装)相关推荐

  1. Bootstrap弹出层(modal)垂直居中简单解决方案(无需修改js)

    Bootstrap弹出层(modal)垂直居中简单解决方案(无需修改js) 参考文章: (1)Bootstrap弹出层(modal)垂直居中简单解决方案(无需修改js) (2)https://www. ...

  2. RabbitMQ Management HTTP API的简单封装

    RabbitMQ Management HTTP API的简单封装 文章目录 RabbitMQ Management HTTP API的简单封装 官方相关 代码展示 官方相关 官方文档:https:/ ...

  3. Android APP更新下载工具类——简单封装DownloadManager

    几乎所有APP都包含了检查更新功能,更新下载功能的实现方式常用的有两种:1.使用App网络框架的文件下载请求:2.使用自带的DownloadManager类:本文介绍第二种,简单封装一下Downloa ...

  4. 简单封装浏览器 cookie 工具类

    版权声明:本文首发 http://asing1elife.com ,转载请注明出处. https://blog.csdn.net/asing1elife/article/details/8265571 ...

  5. bootstrapdatetimepicker 隐藏触发 bootstrap modal隐藏事件

    如果在bootstrap modal 里面使用 bootstrapdatetimepicker ,并且写一个modal的隐藏方法清空所有文本. 那么当你选择日期之后会发现modal框里所有的文本框的值 ...

  6. 小程序简单封装 request 请求

    我在这里做了详细的介绍 : 小程序简单封装 request 请求 转载于:https://www.cnblogs.com/biangz/p/9984340.html

  7. 简单封装 HTTP 请求

    2017-2-19 更新到第二版: 源码地址:http://git.oschina.net/sp42/ajaxjs/tree/master/ajaxjs-base/src/com/ajaxjs/net ...

  8. 【JDBC】实现对JDBC 连接的简单封装

    package util;import java.sql.Connection; import java.sql.DriverManager;/**** 实现对JDBC 的封装* @author mq ...

  9. centerandzoom 无效_在bootstrap modal 中加载百度地图的信息窗口失效解决方法

    这个问题其实很傻,解决方法没有任何技术含量,只是记录下工作中发生的事. 前阵子给一个汽车集团客户做了一个经销商查询系统,其中一个功能是使用地图标注经销商店面地址,并且实现导航功能. 页面演示地址:ht ...

最新文章

  1. 套用match_再也不用伤脑筋了,分享九个可以直接套用的Excel常用公式,收藏备用...
  2. Java变长参数应该注意的问题
  3. Ghost 的高可用安装 准备篇
  4. iis php5.3 mysql_Win2008 R2配置IIS7.5+PHP Manager+PHP5.3+Mysql5.5+Wincache
  5. 无法监控端口_如何使用snmp监控linux服务器
  6. 监控路由器虚拟服务器,远程监控路由器虚拟服务器设置
  7. 使用 C# 实现 URL 安全的 Base62 转码
  8. 作者:周涛,男,电子科技大学教授。
  9. VS2019调试查看变量_单片机编程软件一点通,IAR单片机编程软件工程调试方法
  10. 服务器上批量替换html内的字符,如何批量替换字符串中的某个特定字符?
  11. 简单的方法完成项目上传到github
  12. Atitit 图像处理类库 halcon11  安装与环境搭建attilax总结
  13. 为什么计算机桌面显示器,电脑显示屏不显示是怎么回事 电脑显示屏不显示如何解决【详细介绍】...
  14. 星环科技社区版TDH新增组件Hyperbase
  15. 概念学习(学习笔记)
  16. 死锁产生的原因及解决方法
  17. PyTorch——device与cuda.device用法
  18. 安全认证、准入控制、RBAC
  19. JIRA部署破解和confluence整合
  20. visio 中取消 交叉连接线的拱形的方法

热门文章

  1. 关于PHP安装扩展pdo_odbc
  2. Codeforces Divisibility【水题】
  3. Cache一致性与2种基本写策略(1)
  4. 转帖一篇:截取密码(VC++)学习消息VC++的好处
  5. Zookeeper应用场景理解
  6. 线程的调度、优先级和亲缘性——Windows核心编程学习手札系列之七
  7. Windows下编辑的(脚本)文本copy到linux下带个^M结尾
  8. 用java做出32选7_用java做的一个彩票32选7的简单程序
  9. java Graphics2D类
  10. PyQt5 技术篇-设置QTableWidget表格组件默认值实例演示,如何获取QTableWidget表格组件里的值,获取表格的行数和列数