bootstrap中的模态框(modal),不同于Tooltips,模态框以 弹出对话框 的形式出现,具有最小和最实用的功能集。

务必将模态框的 HTML 代码放在文档的最高层级内(也就是说,尽量作为 body 标签的直接子元素),以避免其他组件影响模态框的展现或功能。

bootstrap中的模态框(modal,弹出层)_html


默认的modal示例:


[html]  view plain  copy


1. <!DOCTYPE html>  
2. <html lang="zh-CN">  
3. <head>  
4. <meta charset="utf-8">  
5. <meta http-equiv="X-UA-Compatible" content="IE=edge">  
6. <meta name="viewport" content="width=device-width, initial-scale=1">  
7. <title>Bootstrap Modal</title>  
8. <link rel="stylesheet" href="http://cdn.bootcss.com/bootstrap/3.3.5/css/bootstrap.min.css">  
9. </head>  
10. <body>  
11. <button type="button" class="btn btn-primary btn-lg" data-toggle="modal" data-target="#myModal">  
12.     Launch demo modal  
13. </button>  
14.   
15. <div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">  
16. <div class="modal-dialog" role="document">  
17. <div class="modal-content">  
18. <div class="modal-header">  
19. <button type="button" class="close" data-dismiss="modal" aria-label="Close">  
20. <span aria-hidden="true">×</span>  
21. </button>  
22. <h4 class="modal-title" id="myModalLabel">Modal title</h4>  
23. </div>  
24. <div class="modal-body">  
25. <p>One fine body…</p>  
26. </div>  
27. <div class="modal-footer">  
28. <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>  
29. <button type="button" class="btn btn-primary">Save</button>  
30. </div>  
31. </div>  
32. </div>  
33. </div>  
34.   
35. <script src="http://cdn.bootcss.com/jquery/1.11.3/jquery.min.js"></script>  
36. <script src="http://cdn.bootcss.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>  
37. </body>  
38. </html>


  1. 为 .modal 添加 role="dialog",用于指定模态框为对话框。
  2. 为 .modal-dialog 添加 aria-hidden="true" 属性。
  3. 通过 aria-describedby 属性为模态框 .modal 添加描述性信息。

关闭动画

如果你不需要模态框弹出时的动画效果(淡入淡出效果),删掉 .fade 类即可。



通过按钮属性显示不同内容


当有一堆按钮,都要触发相同的模态框(如:向好友列表中某个人发消息),只是有用户ID不同,那么可以使用data-whatever配合

event.relatedtarget

来实现:

1. <!DOCTYPE html>  
2. <html lang="zh-CN">  
3. <head>  
4. <meta charset="utf-8">  
5. <meta http-equiv="X-UA-Compatible" content="IE=edge">  
6. <meta name="viewport" content="width=device-width, initial-scale=1">  
7. <title>Bootstrap Modal</title>  
8. <link rel="stylesheet" href="http://cdn.bootcss.com/bootstrap/3.3.5/css/bootstrap.min.css">  
9. </head>  
10. <body>  
11.   
12.   
13. <div class="panel panel-default">  
14. <div class="panel-heading">好友列表</div>  
15. <div class="panel-body">  
16. <div class="list-group" role="group" aria-label="好友列表">  
17. <button type="button" class="list-group-item" data-toggle="modal" data-target="#exampleModal"  
18. data-whatever="张三">张三  
19. </button>  
20. <button type="button" class="list-group-item" data-toggle="modal" data-target="#exampleModal"  
21. data-whatever="李四">李四  
22. </button>  
23. <button type="button" class="list-group-item" data-toggle="modal" data-target="#exampleModal"  
24. data-whatever="王二">王二  
25. </button>  
26. </div>  
27. </div>  
28. </div>  
29.   
30. <div class="modal fade" id="exampleModal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel">  
31. <div class="modal-dialog" role="document">  
32. <div class="modal-content">  
33. <div class="modal-header">  
34. <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span  
35. aria-hidden="true">×</span></button>  
36. <h4 class="modal-title" id="exampleModalLabel">New message</h4>  
37. </div>  
38. <div class="modal-body">  
39. <form>  
40. <div class="form-group">  
41. <label for="recipient-name" class="control-label">Recipient:</label>  
42. <input type="text" class="form-control" id="recipient-name">  
43. </div>  
44. <div class="form-group">  
45. <label for="message-text" class="control-label">Message:</label>  
46. <textarea class="form-control" id="message-text"></textarea>  
47. </div>  
48. </form>  
49. </div>  
50. <div class="modal-footer">  
51. <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>  
52. <button type="button" class="btn btn-primary">Send message</button>  
53. </div>  
54. </div>  
55. </div>  
56. </div>  
57. <script src="http://cdn.bootcss.com/jquery/1.11.3/jquery.min.js"></script>  
58. <script src="http://cdn.bootcss.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>  
59. <script>  
60.     $('#exampleModal').on('show.bs.modal', function (event) {  
61. button = $(event.relatedTarget) // 触发事件的按钮  
62. recipient = button.data('whatever') // 解析出data-whatever内容  
63. modal = $(this)  
64.         modal.find('.modal-title').text('Message To ' + recipient)  
65.         modal.find('.modal-body input').val(recipient)  
66.     })  
67. </script>  
68. </body>  
69. </html>



通常不需写 JavaScript 代码也可激活模态框。通过在一个起控制器作用的元素(例如:按钮)上添加 data-toggle="modal" 属性,或者 data-target="#foo" 属性,再或者 href="#foo" 属性,用于指向被控制的模态框。



通过JavaScript调用modal

通常只需一行 JavaScript 代码,即可通过元素的 id myModal 调用模态框:

 
 
1. $('#myModal').modal(options)


JavaScript参数


可以将选项通过 data 属性或 JavaScript 代码传递。对于 data 属性,需要将参数名称放到 data- 之后,例如 data-backdrop=""。


名称

类型

默认值

描述

backdrop

boolean或'static'

true

默认情况下,点击其它位置,模态框自动关闭,你可以设置此属性为false或者"static"防止模态框自动关闭

keyboard

boolean

true

键盘上的 esc 键被按下时关闭模态框。

show

path

true

模态框初始化之后就立即显示出来。

remote

path

false

这个参数在v4里会去掉(可以自己写ajax请求来实现)如果提供的是 URL,将利用 jQuery 的 load 方法从此 URL 地址加载要展示的内容(只加载一次)并插入 .modal-content 内。如果使用的是 data 属性 API,还可以利用 href 属性指定内容来源地址。下面是一个实例:

<a data-toggle="modal" href="remote.html" data-target="#modal">Click me</a>

    


调用示例


1.将页面中的某块内容作为模态框激活。接受可选参数 object。

1. $('#myModal').modal({  
2.   keyboard: false  
3. })



2.手动打开或关闭模态框。在模态框显示或隐藏之前返回到主调函数中(也就是,在触发 shown.bs.modal 或 hidden.bs.modal 事件之前)。


1. $('#myModal').modal('toggle')


3.手动打开模态框。在模态框显示之前返回到主调函数中 (也就是,在触发 shown.bs.modal 事件之前)。


    1. $('#myModal').modal('show')

    4.手动隐藏模态框。在模态框隐藏之前返回到主调函数中 (也就是,在触发 hidden.bs.modal 事件之前)。



      1. $('#myModal').modal('hide')



      5.更新模态框,在模态框动态添加或删除内容时:


      1. $('#myModal').modal('handleUpdate')


      绑定事件


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


      事件类型

      描述

      show.bs.modal

      show 方法调用之后立即触发该事件。如果是通过点击某个作为触发器的元素,则此元素可以通过事件的 relatedTarget 属性进行访问。

      shown.bs.modal

      此事件在模态框已经显示出来(并且同时在 CSS 过渡效果完成)之后被触发。如果是通过点击某个作为触发器的元素,则此元素可以通过事件的 relatedTarget 属性进行访问。

      hide.bs.modal

      hide 方法调用之后立即触发该事件。

      hidden.bs.modal

      此事件在模态框被隐藏(并且同时在 CSS 过渡效果完成)之后被触发。

      loaded.bs.modal

      从远端的数据源加载完数据之后触发该事件。

      如:


      [html]  view plain  copy


      1. $('#myModal').on('hidden.bs.modal', function (e) {  
      2.   // do something...  
      3. })