一、模态弹窗
- 弹出模态框是用HTML、CSS和Javascript构建的,它们位于文档中其它表现元素之上,并从
<body>
中删除滚动事件,以便模态框自身的内容能得到滚动。- 点击模态框的“backdrop”(灰背景区域),将自动关闭动态模块框。
- Bootstrap一次只支持一个模态窗口,不支持嵌套模式,因为我们相信那样叠加会造成用户体验不佳。
1.基本
当用户viewport 视口(弹出内容区)或设备的模态变得较长时,它们会自动滚动页面。
如果只要弹出模态而不需要淡入淡出效果,模态窗元素中定义 .fade 即可。
<div class="modal fade" id="modal1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title">标题</h5>
<button class="close" data-dismiss="modal">
<span>×</span>//可直接关闭,也可以灰色区域
</button>
</div>
<div class="modal-body">
Cras mattis consectetur purus sit amet fermentum. Cras justo odio,
dapibus ac facilisis in, egestas eget quam. Morbi leo risus,
porta ac consectetur ac, vestibulum at eros.
</div>
<div class="modal-footer">
<button class="btn btn-secondary" data-dismiss="modal">关闭</button>
<button class="btn btn-primary">保存</button>
</div>
</div>
</div>
</div>
<button class="btn btn-primary" data-toggle="modal" data-target="#modal1">普通模态框</button>
2.垂直居中
将 .modal-dialog-centered 添加到 .modal-dialog 对话框以垂直居中模式。
<div class="modal fade" id="modal2">
<div class="modal-dialog modal-dialog-centered">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title">标题</h5>
<button class="close" data-dismiss="modal">
<span>×</span>
</button>
</div>
<div class="modal-body">
垂直居中的模态框
</div>
<div class="modal-footer">
<button class="btn btn-secondary" data-dismiss="modal">关闭</button>
<button class="btn btn-primary">保存</button>
</div>
</div>
</div>
</div>
3.包含栅格系统
<div class="modal fade" id="modal3">
<div class="modal-dialog modal-dialog-centered"> <!-- modal-dialog-centered这个class要加在这里 -->
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title">标题</h5>
<button class="close" data-dismiss="modal">
<span>×</span>
</button>
</div>
<div class="modal-body">
<div class="container-fluid">
<div class="row">
<div class="col-md-4 bg-info border">第1列</div>
<div class="col-md-4 bg-info border">第2列</div>
<div class="col-md-4 bg-info border">第3列</div>
<div class="col-md-12 bg-info border">第4列</div>
</div>
<div class="row">
<div class="col bg-info border">第1列</div>
<div class="col bg-info border">第2列</div>
<div class="col bg-info border">第3列</div>
<div class="col bg-info border">第4列</div>
</div>
<div class="row">
<div class="col-md-5 bg-info">第1列</div>
<div class="col-md-4 bg-info ml-auto">第2列</div>
</div>
<div class="row mt-3">
<div class="col-xl-2 col-lg-3 col-md-4 col-sm-6 col-12 bg-info border">超大屏6个,大屏4个,中等屏3个,小屏2个,超小屏1个</div>
<div class="col-xl-2 col-lg-3 col-md-4 col-sm-6 col-12 bg-info border">超大屏6个,大屏4个,中等屏3个,小屏2个,超小屏1个</div>
</div>
</div>
</div>
<div class="modal-footer">
<button class="btn btn-secondary" data-dismiss="modal">关闭</button>
<button class="btn btn-primary">保存</button>
</div>
</div>
</div>
</div>
4.模态框相同内容不同
<div class="modal fade" id="modal4">
<div class="modal-dialog modal-dialog-centered">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title">标题</h5>
<button class="close" data-dismiss="modal">
<span>×</span>
</button>
</div>
<div class="modal-body">
<form action="#">
<div class="form-group">
<label for="username" class="col-form-label">用户名:</label>
<input type="text" class="form-control" id="username">
</div>
<div class="form-group">
<label for="comment" class="col-form-label">评论:</label>
<textarea class="form-control" id="comment"></textarea>
</div>
</form>
</div>
<div class="modal-footer">
<button class="btn btn-secondary" data-dismiss="modal">关闭</button>
<button class="btn btn-primary">保存</button>
</div>
</div>
</div>
</div>
<button class="btn btn-success" data-toggle="modal" data-target="#modal4" data-whatever="jimo">模态框相同内容不同</button>
<button class="btn btn-success" data-toggle="modal" data-target="#modal4" data-whatever="lwc">模态框相同内容不同</button>
<button class="btn btn-success" data-toggle="modal" data-target="#modal4" data-whatever="吃瓜群众">模态框相同内容不同</button>
<script>
$('#modal4').on('show.bs.modal',function(ev){
/*
1、$(ev.relatedTarget) 这什值为点击的那个button
2、.data('whatever') 这个是获取data-开关的属性的值
*/
var value=$(ev.relatedTarget).data('whatever');
$(this).find('.modal-title').text('新评论来自于:'+value);
$(this).find('.modal-body input').val(value);
});
</script>
5.尺寸大小
<div class="modal fade bd-example-modal-xl" id="modal5">
<!-- 这里添加.bd-example-modal-xl{lg、sm} -->
<div class="modal-dialog modal-xl"> <!-- 这里添加.modal-xl -->
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title">标题</h5>
<button class="close" data-dismiss="modal">
<span>×</span>
</button>
</div>
<div class="modal-body">
超大尺寸模态框
</div>
<div class="modal-footer">
<button class="btn btn-secondary" data-dismiss="modal">关闭</button>
<button class="btn btn-primary">保存</button>
</div>
</div>
</div>
</div>
6.data属性
data属性,需要添加在button身上
data-backdrop 是否显示遮罩层
data-keyboard 按esc是否关闭模态框
data-focus 让模态框获取到焦点
data-show 初始化时模态框是否显示
<div class="modal fade" id="modal8">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title">标题</h5>
<button class="close" data-dismiss="modal">
<span>×</span>
</button>
</div>
<div class="modal-body">
data属性
</div>
<div class="modal-footer">
<button class="btn btn-secondary" data-dismiss="modal">关闭</button>
<button class="btn btn-primary">保存</button>
</div>
</div>
</div>
</div>
<button class="btn btn-dark" data-toggle="modal" data-target="#modal8"
data-backdrop="true" data-keyboard="false" data-focus="true" data-show="false">
data属性</button>
7.Tooltips工具提示和弹出提示框
当模态框关闭时,其包含的任何提示和Pop提示都会同步关闭。
<div class="modal-body">
<h5>Popover in a modal</h5>
<p>This
<a href="#" role="button" class="btn btn-secondary popover-test" title="Popover title"
data-content="Popover body content is set in this attribute.">button</a>
triggers a popover on click.</p>
<hr>
<h5>Tooltips in a modal</h5>
<p><a href="#" class="tooltip-test" title="Tooltip">This link</a> and
<a href="#" class="tooltip-test" title="Tooltip">that link</a>
have tooltips on hover.</p>
</div>
8.方法与事件
<div class="modal fade" id="myModal">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title">标题</h5>
<button class="close" data-dismiss="modal">
<span>×</span>
</button>
</div>
<div class="modal-body">
data属性
</div>
<div class="modal-footer">
<button class="btn btn-secondary" data-dismiss="modal">关闭</button>
<button class="btn btn-primary">保存</button>
</div>
</div>
</div>
</div>
<button class="btn btn-warning" id="myBtn">方法与事件</button>
<script>
$('#myBtn').click(function(){
$('#myModal').modal('show');
});
/* $('#myModal').modal('show');
setTimeout(function(){
$('#myModal').modal('hide');
},2000); */
//事件
$('#myModal').on('show.bs.modal', function (e) {
console.log('显示前');
});
$('#myModal').on('shown.bs.modal', function (e) {
console.log('完全显示了');
});
$('#myModal').on('hide.bs.modal', function (e) {
console.log('隐藏前');
});
$('#myModal').on('hidden.bs.modal', function (e) {
console.log('完全隐藏了');
});
</script>