In this tutorial you will learn how to create modals with Bootstrap.

Creating Modals with Bootstrap

Modals are basically a dialog box that is used to provide important information to the user or prompt user to take necessary actions before moving on. Modal windows are widely used to warn users for situations like session time out or to receive their final confirmation before going to perform any critical actions such as saving or deleting important data.

You can easily create very smart and flexible dialog boxes with the Bootstrap modal plugin. The following example will show you how to create a simple modal with a header, message body and the footer containing action buttons for the user.

  • <div id="myModal" class="modal fade">
  •     <div class="modal-dialog">
  •         <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">Confirmation</h4>
  •             </div>
  •             <div class="modal-body">
  •                 <p>Do you want to save changes you made to document before closing?</p>
  •                 <p class="text-warning"><small>If you don't save, your changes will be lost.</small></p>
  •             </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>

— The above example launches the modal window when the DOM is fully loaded via JavaScript. The output will look something like this:


Activate Modals via Data Attributes

You can activate a Bootstrap modal by clicking on the button or link via data attributes without writing any JavaScript code. See the following example:

  • <!-- Button HTML (to Trigger Modal) -->
  • <a href="#myModal" role="button" class="btn btn-large btn-primary" data-toggle="modal">Launch Demo Modal</a>
  •  
  • <!-- Modal HTML -->
  • <div id="myModal" class="modal fade">
  •     <div class="modal-dialog">
  •         <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">Confirmation</h4>
  •             </div>
  •             <div class="modal-body">
  •                 <p>Do you want to save changes you made to document before closing?</p>
  •                 <p class="text-warning"><small>If you don't save, your changes will be lost.</small></p>
  •             </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>

The above example launches the modal window on click of the "Launch Demo Modal" button. Let's go through each part of this modal code one by one for a better understanding.

Explanation of Code

To activate a Bootstrap modal via data attributes we basically need two components — the controller element like a button or link, and the modal element itself.

  • The outermost container of every modal in a document must have a unique id (in this case id="myModal"), so that it can be targeted via data-target (for buttons) or href(for hyperlinks) attribute of the controller element.
  • The attribute data-toggle="modal" is required to add on the controller element, like a button or an anchor, along with a attribute data-target="#myModal" orhref="#myModal" to target a specific modal to toggle.
  • The .modal-dialog class sets the width as well as horizontal and vertical alignment of the modal box. Whereas the class .modal-content sets the styles like text and background color, borders, rounded corners etc.

Rest of the thing is self explanatory, such as the .modal-header element defines a header for the modal that usually contains a modal title and a close button, whereas the .modal-bodyelement contains the actual content like text, images, forms etc. and the .modal-footerelement defines the footer that typically contains action buttons for the user.

 

Note:The .fade class on the .modal element adds a fading and sliding animation effect while showing and hiding the modal window. If you want the modal that simply appear without any effect you can just remove this class.


Activate Modals via JavaScript

You may also activate a Bootstrap modal window via JavaScript — just call the modal()Bootstrap method with the modal "id" or "class" selector in your JavaScript code.

  • <script type="text/javascript">
  • $(document).ready(function(){
  •     $(".btn").click(function(){
  •         $("#myModal").modal('show');
  •     });
  • });
  • </script>

Changing the Sizes of Modals

Bootstrap gives you option further to scaling a modal up or down. You can make modals larger or smaller by adding an extra class .modal-lg or .modal-sm on .modal-dialog.

  • <!-- Large modal -->
  • <button class="btn btn-primary" data-toggle="modal" data-target="#largeModal">Large modal</button>
  •  
  • <div id="largeModal" class="modal fade bs-example-modal-lg" tabindex="-1" role="dialog">
  •     <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">&times;</button>
  •                 <h4 class="modal-title">Large Modal</h4>
  •             </div>
  •             <div class="modal-body">
  •                 <p>Add the <code>.modal-lg</code> class on <code>.modal-dialog</code> to create this large modal.</p>
  •             </div>
  •             <div class="modal-footer">
  •                 <button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
  •                 <button type="button" class="btn btn-primary">OK</button>
  •             </div>
  •         </div>
  •     </div>
  • </div>
  •  
  • <!-- Small modal -->
  • <button class="btn btn-primary" data-toggle="modal" data-target="#smallModal">Small modal</button>
  •  
  • <div id="smallModal" class="modal fade" tabindex="-1" role="dialog">
  •     <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">&times;</button>
  •                 <h4 class="modal-title">Small Modal</h4>
  •             </div>
  •             <div class="modal-body">
  •                 <p>Add the <code>.modal-sm</code> class on <code>.modal-dialog</code> to create this small modal.</p>
  •             </div>
  •             <div class="modal-footer">
  •                 <button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
  •                 <button type="button" class="btn btn-primary">OK</button>
  •             </div>
  •         </div>
  •     </div>
  • </div>

Changing Modal Content Based on Trigger Button

Often several modal on a web page has almost same content with minor differences.

You can use the modal events to create slightly different modal windows based on the same modal HTML. The following example will change the title of the modal window according to the trigger button's data-title attribute value.

  • <script type="text/javascript">
  • $(document).ready(function(){
  •     $("#myModal").on('show.bs.modal', function(event){
  •         // Get button that triggered the modal
  •         var button = $(event.relatedTarget);
  •         // Extract value from data-* attributes
  •         var titleData = button.data('title');
  •         $(this).find('.modal-title').text(titleData + ' Form');
  •     });
  • });
  • </script>

Options

There are certain options which may be passed to modal() Bootstrap method to customize the functionality of a modal window.

Name Type Default Value Description
backdrop boolean
or the string'static'
true Includes a modal-backdrop (black overlay area) element. Alternatively, you may specify static for a backdrop which doesn't close the modal on click.
keyboard boolean true Closes the modal window on press of escape key.
show boolean true Shows the modal when initialized or activate.
remote URL false Deprecated If a remote url is provided, content will be loaded one time via jQuery's load method and injected into the '.modal-content' div.

You may set these options either through the use of data attributes or JavaScript. For setting the modals options via data attributes, just append the option name to data-, like data-backdrop="static"data-keyboard="false" etc.

However, JavaScript is the more preferable way for setting these options as it prevents you from repetitive work. See the modal's method .modal(options) in the section below to know how to set the options for modals using the JavaScript.

If you're using the data api for setting the options for modal window, you may alternatively use the "href" attribute to provide the URL of remote source, like this:

  • <!-- Button HTML (to Trigger Modal) -->
  • <a href="remote.html" role="button" class="btn btn-large btn-primary" data-toggle="modal" data-target="#myModal">Launch Demo Modal</a>
  •  
  • <!-- Modal HTML -->
  • <div id="myModal" class="modal fade">
  •     <div class="modal-dialog">
  •         <div class="modal-content">
  •             <!-- Content will be loaded here from "remote.php" file -->
  •         </div>
  •     </div>
  • </div>
 

Note:The remote option for the Bootstrap modals is deprecated since v3.3.0 and will be removed in v4. Use the client-side templating or a data binding framework instead, or call the jQuery.load method yourself.


Methods

These are the standard bootstrap's modals methods:

.modal(options)

This method activates the content as a modal. It also allows you to set options for them.

The jQuery code in the following example will prevent the modal from closing when a user clicks on the backdrop i.e. black overlay area behind the modal.

  • <script type="text/javascript">
  • $(document).ready(function(){
  •     $(".launch-modal").click(function(){
  •         $("#myModal").modal({
  •             backdrop: 'static'
  •         });
  •     }); 
  • });
  • </script>

The following jQuery code will prevent the modal from closing on press of the escape key.

  • <script type="text/javascript">
  • $(document).ready(function(){
  •     $(".launch-modal").click(function(){
  •         $("#myModal").modal({
  •             keyboard: false
  •         });
  •     }); 
  • });
  • </script>

The jQuery code in the following example will create a modal in which content of the modal will be inserted from a remote file upon activation.

  • <script type="text/javascript">
  • $(document).ready(function(){
  •     $(".launch-modal").click(function(){
  •         $("#myModal").modal({
  •             remote: '../remote.php'
  •         });
  •     }); 
  • });
  • </script>

.modal('toggle')

This method toggles a modal window manually.

  • <script type="text/javascript">
  • $(document).ready(function(){
  •     $(".toggle-modal").click(function(){
  •         $("#myModal").modal('toggle');
  •     });
  • });
  • </script>

.modal('show')

This method can be used to open a modal window manually.

  • <script type="text/javascript">
  • $(document).ready(function(){
  •     $(".open-modal").click(function(){
  •         $("#myModal").modal('show');
  •     });
  • });
  • </script>

.modal('hide')

This method can be used to hide a modal window manually.

  • <script type="text/javascript">
  • $(document).ready(function(){
  •     $(".hide-modal").click(function(){
  •         $("#myModal").modal('hide');
  •     });
  • });
  • </script>

.modal('handleUpdate')

This method readjusts the modal's position to counter the jerk that is occurring due to the appearance of the viewport scrollbar in case if the modal height changes in such a way that it becomes higher than the viewport height while it is open.

A common example of this scenario is showing the hidden elements inside the modal via JavaScript or loading content inside the modal using Ajax after activation.

  • <script type="text/javascript">
  • $(document).ready(function(){
  •     $(".show-text").click(function(){
  •         $('#myModal').find(".lots-of-text").toggle();
  •         $('#myModal').modal('handleUpdate')
  •     });
  • });
  • </script>

Events

Bootstrap's modal class includes few events for hooking into modal functionality.

Event Description
show.bs.modal This event fires immediately when the show instance method is called.
shown.bs.modal This event is fired when the modal has been made visible to the user. It will wait until the CSS transition process has been fully completed before getting fired.
hide.bs.modal This event is fired immediately when the hide instance method has been called.
hidden.bs.modal This event is fired when the modal has finished being hidden from the user. It will wait until the CSS transition process has been fully completed before getting fired.
loaded.bs.modal This event is fired when the modal has loaded content using the remoteoption.

The following example displays an alert message to the user when fade out transition of the modal window has been fully completed.

  • <script type="text/javascript">
  • $(document).ready(function(){
  •     $("#myModal").on('hidden.bs.modal', function(){
  •         alert("Modal window has been completely closed.");
  •     });
  • });
  • </script>
 

Tip:See also the Bootstrap FAQ section for more examples on modals, like setting vertical alignment, changing default width, embedding video, etc.

how to create modals with Bootstrap的更多相关文章

  1. Bootstrap库之Modals

    Bootstrap库之Modals. Bootstrap是Twitter推出的一个开发工具包,包含了一些比较常用的CSS,JavaScript代码.使用Bootstrap可以加快前端开发的速度.本站( ...

  2. bootstrap弹框

    http://v3.bootcss.com/javascript/#modals 参考bootstrap官网 模态框做php后端 前端一直不行,但是很多时候 用到ajax都要用到弹框,一直在代码里面找 ...

  3. AngularJS从构建项目开始

    AngularJS从构建项目开始 AngularJS体验式编程系列文章,将介绍如何用angularjs构建一个强大的web前端系统.angularjs是由Google团队开发的一款非常优秀web前端框 ...

  4. How to handle Imbalanced Classification Problems in machine learning?

    How to handle Imbalanced Classification Problems in machine learning? from:https://www.analyticsvidh ...

  5. Create Dynamic Modal Dialog Form in AdminLTE Bootstrap template

    原文地址 Create modal dialog form in jquery using bootstrap framework, slightly different from the usual ...

  6. [转]ASP.NET MVC 5 List Editor with Bootstrap Modals

    本文转自:https://www.codeproject.com/articles/786085/asp-net-mvc-list-editor-with-bootstrap-modals With ...

  7. Bootstrap Modals(模态框)

    http://www.runoob.com/bootstrap/bootstrap-v2-modal-plugin.html 描述 Bootstrap Modals(模态框)是使用定制的 Jquery ...

  8. bootstrap学习--模态弹出框modals轮子

    1.点击按钮型 <link rel="stylesheet" href="lib/bootstrap/css/bootstrap.min.css"> ...

  9. js学习之--Bootstrap Modals(模态框)

    http://www.runoob.com/bootstrap/bootstrap-v2-modal-plugin.html http://outofmemory.cn/bootstrap/tutor ...

随机推荐

  1. luogu4093 [HEOI2016/TJOI2016]序列

    因为一个变化只会变化一个值,所以 \(dp[i]=max(dp[j])+1,j<i,maxval_j \leq a[i], a[j] \leq minval_i\) 发现跟二维数点问题挺像,树状 ...

  2. oo的一些概念

    http://docs.kissyui.com/5.0/guides/base/oo.html JavaScript 语言自成体系,自有一套代码重用的模式,这些常见的代码重用模式可以在<Java ...

  3. 理解js的几个关键问题(1):全局变量new和关于hasOwnPropery和PropertyIsEnumerable 等

    一.作用域和全局变量 var test=function(){ var a=1; setTimeout(function(){ console.log(a); a=2; },1000); a=3; s ...

  4. 大数据学习——服务器定期上传nginx日志到hdfs

    需求:按照所学知识完成如下: 服务器定期上传nginx日志到hdfs 提示: Hdfs的创建文件夹命令: Hadoop fs -mkdir /文件夹名称 Hdfs的上传命令: Hadoop fs -p ...

  5. 四、SQL基础知识--约束和视图

    --创建约束的方式 --一.在字段创建时将约束添加到字段之后 CREATE TABLE ZYJ_YUESHU( ZYJ_ID VARCHAR(20) NOT NULL PRIMARY KEY, --创 ...

  6. python003 Python3 基本数据类型

    Python3 基本数据类型Python 中的变量不需要声明.每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建.在 Python 中,变量就是变量,它没有类型,我们所说的"类型&qu ...

  7. NOIP2013D1T3货车运输(最大生成树+倍增lca)

    传送门 这道题,先用kruskal求一遍图中的最大生成树. 然后,倍增求lca,求lca的同时求出边权的最小值. #include <cstring> #include <cstdi ...

  8. Toad Oracle 本地/远程数据库导入/导出 数据库备份

    1. Toad进入数据库后,选择 Database ==> Export  ===>  Export Utility Wizard ,选择export  user(按用户导出),选择Toa ...

  9. ISAPI映射路径错误,导致K3Cloud打不开。

    今天一个同事说她的K3Cloud打不开,一看是页面报500错误,具体信息看图片: 问题: ISAPI配置的映射路径错了,多了个反斜线. 解决办法: 在IIS管理器中找到ISAPI筛选器,删除掉就行了.

  10. Codeforces889C. Maximum Element

    $n \leq 2000000$的排列,问有多少满足:存在个$i$,使得$p_i \neq n$,且$p_j<p_i,j \in [i+1,i+K]$,$K \leq 2000000$是给定常数 ...