Bootstrap JavaScript插件:模态框 (modal.js)

简介: Bootstrap 框架

作者:WangMin
格言:努力做好自己喜欢的每一件事

banner.png

注意:

  • 模态框不支持嵌套,需要嵌套模态框的话,只能自己手动实现。
  • 模态框包含的html最好尽量作为body的直接子元素,以避免其他组件影响模态框的展现和功能。
  • 弹出层出来以后,页面的滚动条会被覆盖。

模态框主体结构包含了模态框的头、体和一组放置于底部的按钮 :

  • modal 弹出层父级
  • modal-dialog 弹出层
  • modal-content 弹出层的内容区域
  • modal-header 弹出层的头部区域
  • modal-body 弹出层的主体区域
  • modal-footer 弹出层的底部区域
  • fade 让弹出层有一个运动的效果,加给弹出层父级

基本结构代码如下:

<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
    <div class="modal-dialog">
        <div class="modal-content">
           <div class="modal-header">
            <button type="button" class="close" data-dismiss="modal" aria-hidden="true">
             ×
            </button>
           </div>
           <div class="modal-body">
                code。。。
           </div><!--modal-body-->
           <div class="modal-footer">
               <button type="button" class="btn btn-default" data-dismiss="modal">Close</button> 
           </div>
<!--modal-footer-->
        </div><!-- modal-content -->
     </div><!--modal-dialog -->
</div>

1.png

动态实例

点击下面的按钮即可通过 JavaScript 启动一个模态框。在模态框之前添加一个按钮(button),还需要给button添加data-toggle="modal" 和 data-target="目标模态框ID"(指定要切换的特定的模态框) 来启动模态框效果,模态框将从上到下、逐渐浮现到页面前。代码如下:

<button class="btn btn-primary btn-lg" data-toggle="modal" data-target="#myModal">
    开始演示模态框
</button>
<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
    <div class="modal-dialog">
        <div class="modal-content">
           <div class="modal-header">
            <button type="button" class="close" data-dismiss="modal" aria-hidden="true">
             ×
            </button>
           </div>
           <div class="modal-body">
                code。。。
           </div><!--modal-body-->
           <div class="modal-footer">
               <button type="button" class="btn btn-default" data-dismiss="modal">Close</button> 
           </div>
<!--modal-footer-->
        </div><!-- modal-content -->
     </div><!--modal-dialog -->
</div>

注意:增强模态框的可访问性。务必为.modal添加role="dialog"aria-labelledby="..."属性,用于指向模态框的标题栏(modal-title);为.modal-dialog添加aria-hidden="true"属性。


模态框可选尺寸

模态框提供了两个可选尺寸,通过为.modal-dialog增加一个样式调整类实现。
大尺寸模态框(modal-lg):

<button class="btn btn-primary btn-lg" data-toggle="modal" data-target="#myModal">
    开始演示模态框
</button>
<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
    <div class="modal-dialog modal-lg">
        <div class="modal-content">
           <div class="modal-header">
            <button type="button" class="close" data-dismiss="modal" aria-hidden="true">
             ×
            </button>
           </div>
           <div class="modal-body">
                code。。。
           </div><!--modal-body-->
           <div class="modal-footer">
               <button type="button" class="btn btn-default" data-dismiss="modal">Close</button> 
           </div>
<!--modal-footer-->
        </div><!-- modal-content -->
     </div><!--modal-dialog -->
</div>

2.png

小尺寸模态框(modal-sm):

<button class="btn btn-primary btn-lg" data-toggle="modal" data-target="#myModal">
    开始演示模态框
</button>
<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
    <div class="modal-dialog modal-sm">
        <div class="modal-content">
           <div class="modal-header">
            <button type="button" class="close" data-dismiss="modal" aria-hidden="true">
             ×
            </button>
           </div>
           <div class="modal-body">
                code。。。
           </div><!--modal-body-->
           <div class="modal-footer">
               <button type="button" class="btn btn-default" data-dismiss="modal">Close</button> 
           </div>
<!--modal-footer-->
        </div><!-- modal-content -->
     </div><!--modal-dialog -->
</div>

3.png

实际效果需要自己实际操作并在浏览器上展示。


禁止动画效果
如果不需要模态框弹出时的动画效果(淡入淡出效果),删掉.fade类就可以了。


要利用模态中的引导网格系统(栅格系统),只需在.modal主体(modal-body)中嵌套.rows,然后使用普通的网格系统类;同样的,在模态框中使用表单,只需在.modal主体(modal-body)中嵌套form表单。

用法

通过 data 属性或 JavaScript 调用模态框插件,可以根据需要动态展示隐藏的内容。模态框弹出时还会为<body>元素添加.modal-open类,从而覆盖页面默认的滚动行为,并且还会自动生成一个.modal-backdrop元素用于提供一个可点击的区域,点击此区域就即可关闭模态框。

  • 通过 data 属性:在控制器元素(比如按钮或者链接)上设置属性 data-toggle=”modal”,同时设置 data-target=”#identifier” 或 href=”#identifier” 来指定要切换的特定的模态框(带有 id=”identifier”)。例如:
    <button class="btn btn-primary btn-lg" data-toggle="modal" data-target="#myModal">
      开始演示模态框
    </button>
    
  • 通过 JavaScript 调用:只需一行 JavaScript 代码,即可通过元素的 idmyModal调用模态框:

    $('#identifier').modal(options)
    

    参数

  • backdrop: true/false/'static' 背景遮罩的显示与否

  • keyboard: true/false 键盘上的esc键可否关闭模态框
  • show:true/false 模态框是否初始好了就立即显示
  • remote: path 用jquery的load方法加载指定url的内容到.modal-content

方法

$('#myModal').modal(option); //显示模态框 
$('#myModal').modal('toggle'); //切换模态框的显示和隐藏 
$('#myModal').modal('show'); //显示
 $('#myModal').modal('hide'); //隐藏

事件

Bootstrap 的模态框类提供了一些事件用于监听并执行你自己的代码。

事件类型 描述
show.bs.modal show方法调用之后立即触发该事件。如果是通过点击某个作为触发器的元素,则此元素可以通过事件的relatedTarget属性进行访问。
shown.bs.modal 此事件在模态框已经显示出来(并且同时在 CSS 过渡效果完成)之后被触发。如果是通过点击某个作为触发器的元素,则此元素可以通过事件的relatedTarget属性进行访问。
hide.bs.modal hide方法调用之后立即触发该事件。
hidden.bs.modal 此事件在模态框被隐藏(并且同时在 CSS 过渡效果完成)之后被触发。
loaded.bs.modal 远端的数据源加载完数据之后触发该事件。

就先分享到这里!! :smile: 后续继续更新!!

目录
相关文章
|
19天前
|
JavaScript 前端开发
javascript开发的简单的弹幕插件
这是一个原生javascript开发的简单的弹幕插件,具有美观、易用,占用的资源较低等特点,可以给弹幕设置内容、颜色、头像、链接地址等属性,鼠标悬停等,简单实用,欢迎下载!
35 5
|
1月前
|
人工智能 JavaScript 前端开发
使用Node.js模拟执行JavaScript
使用Node.js模拟执行JavaScript
|
1月前
|
JavaScript 前端开发
电话号码正则表达式 代码 javascript+html,JS正则表达式判断11位手机号码
电话号码正则表达式 代码 javascript+html,JS正则表达式判断11位手机号码
99 1
|
19天前
|
JavaScript 定位技术
jQuery鹰眼视图小地图定位预览插件minimap.js
这是一个jQuery小地图定位预览视图,默认左侧是页面主要内容,minimap.js的好处就是在它的右侧形成一个快速定位通道,产生一个缩小版的页面,即预览效果,可以点击并快速定位到页面的某个位置。简单实用,欢迎下载!
30 0
|
30天前
|
存储 JSON JavaScript
Vue.js开发中基于localStorage与sessionStorage的本地存储利器:Vue-ls插件使用详解
Vue.js开发中基于localStorage与sessionStorage的本地存储利器:Vue-ls插件使用详解
46 0
|
30天前
|
Web App开发 JavaScript 前端开发
Node.js:JavaScript世界的全能工具
Node.js:JavaScript世界的全能工具
|
30天前
|
JSON JavaScript 前端开发
使用JavaScript和Node.js构建简单的RESTful API服务器
【10月更文挑战第12天】使用JavaScript和Node.js构建简单的RESTful API服务器
17 0
|
3月前
|
Java 数据库连接 数据库
从零到精通:揭秘 Hibernate 构建持久层服务的全过程,你离数据持久化大师还有多远?
【8月更文挑战第31天】本文详细介绍了如何从零开始使用 Hibernate 构建一个持久层服务。首先,通过在 Maven 项目中添加必要的依赖,确保项目具备使用 Hibernate 的条件。接着,配置 `hibernate.cfg.xml` 文件以连接 MySQL 数据库,并设置了基本属性。然后定义了一个简单的 `User` 实体类及其映射关系。此外,还创建了一个 `HibernateUtil` 工具类来管理 `SessionFactory`。
39 0
|
3月前
|
缓存 JavaScript 前端开发
Vue.js与JavaScript性能优化终极揭秘:掌握这些技巧,让你的Web应用飞一般地流畅!
【8月更文挑战第30天】随着前端应用复杂度的增加,性能优化变得至关重要。本文深入探讨了如何利用Vue.js和JavaScript实现高效的应用性能。主要内容包括:优化组件设计以减少不必要的渲染,采用异步组件与懒加载技术加速应用启动,利用虚拟滚动和分页处理大数据集,改进Vuex使用方式以及合理运用浏览器缓存等策略。通过具体示例和最佳实践,帮助开发者充分挖掘Vue.js潜力,打造高性能的前端应用。
69 0
|
3月前
|
存储 JavaScript 前端开发
【Vue.js的神秘力量】一键解锁:如何让Bootstrap和Vuex成为你的开发超能力?
【8月更文挑战第30天】Vue.js是一个轻量且灵活的JavaScript框架,易于上手且功能强大。为提高开发效率和应用交互性,常需集成第三方库。本文介绍如何在Vue.js项目中集成Bootstrap和Vuex,及其它常见第三方库。Bootstrap提供响应式设计和预制组件,通过安装插件和引入CSS/JS即可集成;Vuex作为官方状态管理库,通过安装并创建store来管理组件状态。此外,Vue.js还可轻松集成Axios和Vue Router等库,提升HTTP请求和页面路由功能。合理选择和集成第三方库能显著提升开发效率,但需保持代码可维护性和可读性。
32 0