当前位置: 首页 > 工具软件 > Modal Panel > 使用案例 >

BootStrap modal模态弹窗使用

麹高远
2023-12-01

默认的model案例:


<!DOCTYPE html>  
<html lang="zh-CN">  
<head>  
    <meta charset="utf-8">  
    <meta http-equiv="X-UA-Compatible" content="IE=edge">  
    <meta name="viewport" content="width=device-width, initial-scale=1">  
    <title>Bootstrap Modal</title>  
    <link rel="stylesheet" href="http://cdn.bootcss.com/bootstrap/3.3.5/css/bootstrap.min.css">  
</head>  
<body>  
<button type="button" class="btn btn-primary btn-lg" data-toggle="modal" data-target="#myModal">  
    Launch demo modal  
</button>  
  
<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">  
    <div class="modal-dialog" role="document">  
        <div class="modal-content">  
            <div class="modal-header">  
                <button type="button" class="close" data-dismiss="modal" aria-label="Close">  
                    <span aria-hidden="true">×</span>  
                </button>  
                <h4 class="modal-title" id="myModalLabel">Modal title</h4>  
            </div>  
            <div class="modal-body">  
                <p>One fine body…</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</button>  
            </div>  
        </div>  
    </div>  
</div>  
  
<script src="http://cdn.bootcss.com/jquery/1.11.3/jquery.min.js"></script>  
<script src="http://cdn.bootcss.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>  
</body>  
</html>  

    一.model打开

1、静态打开:通过data属性打开隐藏模态框
设置按钮button的data-toggle:"modal"(以模态框的形式打开),data-target:"#myModal"(设置为modal的id)
2、动态打开:以jquery代码为例

$("#myModal").modal("toggle");

二.model的设置

1.通过modal-sm和modal-lg改变弹窗的大小,这两个class要设置在modal-dialog那一层
2.modal-header中的关闭按钮的关键属性为class="close"该class实现了样式的改变,data-dismiss="modal"提供了HTML关闭的触发条件
3.模态弹窗提供了四个属性,这四个属性通常设置在模态弹窗上class="modal"那一层(内容DOM的最外层),

四个属性分别为:
a.data-backdrop

是否包含一个背景,默认值为true同时单击背景可以关闭模态窗,设置为data-backdrop="static"则单击背景时不关闭,设置为backdrop="false"则不存在背景


b.data-keyboard

按下ESC时是否关闭模态窗默认值为true即按下时关闭模态窗,设置为data-keyboard="false"则在点击ESC时不再关闭模态窗(该属性要想生效要在最外层设置属性tabindex)


c.data-show

初始化时是否显示默认值为true即初始时显示,data-show="false"则初始化时不显示第一次点击触发元素准备模态窗,在点击一次开始显示模态窗


d.href:加载其他内容


三.model 模态窗提供了四个事件:

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


注意:

1.show.bs.modal在显示之前触发
2.shown.bs.modal在显示之后触发
3.hide.bs.modal在隐藏之前触发
4.hidden.bs.modal在隐藏之后触发


在modal框加载同时,提供几个方法用来控制modal框
$("#myModal").on("loaded.bs.modal",function{
//在模态框加载的同时做一些动作
});
$("#myModal").on("show.bs.modal",function{
//在show方法后调用
});
$("#myModal").on("shown.bs.modal",function{
//在模态框完全展示出来做一些动作
});
$("#myModal").on("hide.bs.modal",function{
//hide方法后调用
});
$("#myModal").on("hiden.bs.modal",function{
//监听模态框隐藏事件做一些动作
});

列如:


<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8"> 
	<title>Bootstrap 实例 - 模态框(Modal)插件</title>
	<link rel="stylesheet" href="http://cdn.static.runoob.com/libs/bootstrap/3.3.7/css/bootstrap.min.css">
	<script src="http://cdn.static.runoob.com/libs/jquery/2.1.1/jquery.min.js"></script>
	<script src="http://cdn.static.runoob.com/libs/bootstrap/3.3.7/js/bootstrap.min.js"></script>
</head>
<body>

<h2>创建模态框(Modal)</h2>
<!-- 按钮触发模态框 -->
<button class="btn btn-primary btn-lg">
	开始演示模态框
</button>
<!-- 模态框(Modal) -->
<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden>
	<div class="modal-dialog">
		<div class="modal-content">
			<div class="modal-header">
				<button type="button" class="close" data-dismiss="modal" aria-hidden="true">
					×
				</button>
				<h4 class="modal-title" id="myModalLabel">
					模态框(Modal)标题
				</h4>
			</div>
			<div class="modal-body">
				在这里添加一些文本
			</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><!-- /.modal-content -->
	</div><!-- /.modal -->
</div>
	<script>
  $(function(){
    $(".btn").click(function(){
      $("#myModal").modal("toggle");
    });
    $('#myModal').on('show.bs.modal', function (e) {
        alert('show.bs.modal')
    });
    $('#myModal').on('shown.bs.modal', function (e) {
        alert('shown.bs.modal')
    })
  });
</script>
</body>
</html>
 列如:当有一堆按钮,都要触发相同的模态框(如:向好友列表中某个人发消息),只是有用户ID不同,那么可以使用data-whatever配合event.relatedtarget来实现:

<!DOCTYPE html>  
<html lang="zh-CN">  
<head>  
    <meta charset="utf-8">  
    <meta http-equiv="X-UA-Compatible" content="IE=edge">  
    <meta name="viewport" content="width=device-width, initial-scale=1">  
    <title>Bootstrap Modal</title>  
    <link rel="stylesheet" href="http://cdn.bootcss.com/bootstrap/3.3.5/css/bootstrap.min.css">  
</head>  
<body>  
  
  
<div class="panel panel-default">  
    <div class="panel-heading">好友列表</div>  
    <div class="panel-body">  
        <div class="list-group" role="group" aria-label="好友列表">  
            <button type="button" class="list-group-item" data-toggle="modal" data-target="#exampleModal"  
                    data-whatever="张三">张三  
            </button>  
            <button type="button" class="list-group-item" data-toggle="modal" data-target="#exampleModal"  
                    data-whatever="李四">李四  
            </button>  
            <button type="button" class="list-group-item" data-toggle="modal" data-target="#exampleModal"  
                    data-whatever="王二">王二  
            </button>  
        </div>  
    </div>  
</div>  
  
<div class="modal fade" id="exampleModal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel">  
    <div class="modal-dialog" role="document">  
        <div class="modal-content">  
            <div class="modal-header">  
                <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span  
                        aria-hidden="true">×</span></button>  
                <h4 class="modal-title" id="exampleModalLabel">New message</h4>  
            </div>  
            <div class="modal-body">  
                <form>  
                    <div class="form-group">  
                        <label for="recipient-name" class="control-label">Recipient:</label>  
                        <input type="text" class="form-control" id="recipient-name">  
                    </div>  
                    <div class="form-group">  
                        <label for="message-text" class="control-label">Message:</label>  
                        <textarea class="form-control" id="message-text"></textarea>  
                    </div>  
                </form>  
            </div>  
            <div class="modal-footer">  
                <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>  
                <button type="button" class="btn btn-primary">Send message</button>  
            </div>  
        </div>  
    </div>  
</div>  
<script src="http://cdn.bootcss.com/jquery/1.11.3/jquery.min.js"></script>  
<script src="http://cdn.bootcss.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>  
<script>  
    $('#exampleModal').on('show.bs.modal', function (event) {  
        var button = $(event.relatedTarget) // 触发事件的按钮  
        var recipient = button.data('whatever') // 解析出data-whatever内容  
        var modal = $(this)  
        modal.find('.modal-title').text('Message To ' + recipient)  
        modal.find('.modal-body input').val(recipient)  
    })  
</script>  
</body>  
</html>  

 类似资料: