在这里总结两种弹窗技术,以供学习或复习:BootStrap Modal模态框和Custombox
1.BootStrap Modal模态框
- 介绍
模态框(Modal)是覆盖在父窗体上的子窗体。通常,目的是显示来自一个单独的源的内容,可以在不离开父窗体的情况下有一些互动。子窗体可提供信息、交互等。如果想要单独引用该插件的功能,那么您需要引用 modal.js。或者,正如 Bootstrap 插件概览 一章中所提到,您可以引用 bootstrap.js 或压缩版的 bootstrap.min.js。
- 用法
使用模态窗口,通常需要某种触发器来触发Modal事件,比如按钮或标签。在下面的实例中,我们使用的是按钮来触发事件。分别用三种方法实现:
- 实例
- 直接打开模态窗口实例:
<div class="content">
<h2>创建模态框(Modal)</h2>
<!-- 按钮触发模态框 -->
<button class="btn btn-primary btn-lg" data-toggle="modal" data-target="#myModal">开始演示模态框</button>
<!-- 模态框(Modal) -->
<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">
<h4 class="modal-title" id="myModalLabel">模态框(Modal)标题</h4>
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
</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>
</div>
代码讲解:
- 如果您仔细查看上面的代码,您会发现在 标签中,data-target="#myModal" 是您想要在页面上加载的模态框的目标。您可以在页面上创建多个模态框,然后为每个模态框创建不同的触发器。现在,很明显,您不能在同一时间加载多个模块,但您可以在页面上创建多个在不同时间进行加载。
- 在模态框中需要注意两点:
- 第一是 .modal,用来把
的内容识别为模态框。
- 第二是 .fade class。当模态框被切换时,它会引起内容淡入淡出。
- 第一是 .modal,用来把
- aria-labelledby=“myModalLabel”,该属性引用模态框的标题。
- 属性 aria-hidden=“true” 用于保持模态窗口不可见,直到触发器被触发为止(比如点击在相关的按钮上)。
-
,modal-header 是为模态窗口的头部定义样式的类。
- class=“close”,close 是一个 CSS class,用于为模态窗口的关闭按钮设置样式。
- data-dismiss=“modal”,是一个自定义的 HTML5 data 属性。在这里它被用于关闭模态窗口。
- class=“modal-body”,是 Bootstrap CSS 的一个 CSS class,用于为模态窗口的主体设置样式。
- class=“modal-footer”,是 Bootstrap CSS 的一个 CSS class,用于为模态窗口的底部设置样式。
- data-toggle=“modal”,HTML5 自定义的 data 属性 data-toggle 用于打开模态窗口。
以上参考菜鸟教程
2. 使用JS手动打开模态窗口
<button class="btn btn-primary btn-lg" onclick="jsOpenModal()">
js打开模态框1
</button>
<br>
<br>
<button class="btn btn-primary btn-lg" onclick="jsOpenModal2()">
js打开模态框2
</button>
js代码:
<script type="text/javascript">
function jsOpenModal() {
$('#myModal').modal('show'); //手动打开模态框
}
function jsOpenModal2() {
$('#myModal2').modal('toggle'); //切换模态框的可见状态,如果可见就隐藏,如果隐藏就可见
}
</script>
模态窗口2代码:
<div class="modal fade" id="myModal2" tabindex="-1" role="dialog" aria-labelledby="myModalLabel2"
aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h4 class="modal-title" id="myModalLabel2">
模态框2
</h4>
</div>
<div class="modal-body">
<form>
<div class="form-group">
<label for="type" class="control-label">type:</label>
<input type="text" class="form-control" id="type">
</div>
<div class="form-group">
<label for="style" class="control-label">style:</label>
<input type="text" class="form-control" id="style">
</div>
<div class="form-group">
<label for="content" class="control-label">content:</label>
<input type="text" class="form-control" id="content">
</div>
</form>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-primary">
提交更改
</button>
</div>
</div><!-- /.modal-content -->
</div><!-- /.modal -->
2.Custombox
- 介绍
Custombox同样是一个弹窗插件,使用JavaScript和CSS 3实现,配置简单,动画效果丰富,兼容多种终端,因此也可以作为弹窗整合的选择。
- 用法
官网中提供了Custombox的下载文件,各种demo展示,和一些参数简介以及使用方法。
- 参数
// Instantiate new modal
new Custombox.modal({
// Options
content = {
target: null, //设置弹窗的URL,ID或者Class
effect: 'fadein', //设置效果,这里是渐进渐出,其他效果官网也有展示
id: null, //设置ID
container: null, //设置页面元素容器的元素(ID或Class),如果它不存在,将根据效果自动创建。
close: true, // 是否允许使用esc键关闭弹窗 默认true
clone: false, //克隆DOM的元素。
animateFrom: 'top', // 动画出现位置 top、left、center、right
animateTo: 'top',//动画消失位置 top、left、center、right
positionX: 'center',//横坐标位置 top、left、center、right
positionY: 'center',//纵坐标位置 top、left、center、right
width: null,//宽度
speedIn: 300,//进入速度,以毫秒为单位
speedOut: 300,//消失速度,以毫秒为单位
delay: 150,//动画延迟,以毫秒为单位
fullscreen: false,//设置全屏模式,默认false
onOpen: null, //钩子函数,弹窗打开时触发
onComplete: null,//钩子函数,弹窗加载完成时触发
onClose: null,//钩子函数,弹窗关闭时触发
}
});
其中 target 参数、effect 参数是较为常用的参数,它们用来定义 Custombox 对象打开哪个弹框,以及使用什么效果打开。其他参数都是辅助参数,可根据所需的动画效果进行选择。
另外三个比较重要的参数是onOpen 、onComplete 、onClose,分别定义了弹窗打开时触发事件、弹窗加载完成时触发事件、弹窗关闭时触发事件,如果弹框交互复杂,这三个钩子函数可以帮上大忙。
- 实例
使用Custombox实现上面Modal实现的功能
<!-- 弹框触发按钮 -->
<button class="btn btn-primary btn-lg" "custombox1()">
打开custombox1
</button>
<div class="content" id="custombox1" style="display: none">
<div class="modal-dialog" role="document">
<div class="modal-content" style="width: 400px;height: 420px;">
<div class="modal-header">
<h6 class="modal-title" id="custombox1Label">custombox1</h6>
</div>
<div class="modal-body">
<form>
<div class="form-group">
<div class="alert alert-danger">点击空白处退出</div>
</div>
<div class="form-group">
<div class="alert">这是custombox1!</div>
</div>
</form>
</div>
</div>
</div>
<!-- /.content -->
</div>
通过按钮触发弹窗打开事件
function custombox1() {
var custombox1 = new Custombox.modal({
content: {
effect: 'fadein',
target: '#custombox1'
}
});
custombox1.open();
}
先写到这里,本文代码都在这里