常见的弹窗技术

在这里总结两种弹窗技术,以供学习或复习:BootStrap Modal模态框和Custombox

1.BootStrap Modal模态框

  • 介绍

模态框(Modal)是覆盖在父窗体上的子窗体。通常,目的是显示来自一个单独的源的内容,可以在不离开父窗体的情况下有一些互动。子窗体可提供信息、交互等。如果想要单独引用该插件的功能,那么您需要引用 modal.js。或者,正如 Bootstrap 插件概览 一章中所提到,您可以引用 bootstrap.js 或压缩版的 bootstrap.min.js。

  • 用法

使用模态窗口,通常需要某种触发器来触发Modal事件,比如按钮或标签。在下面的实例中,我们使用的是按钮来触发事件。分别用三种方法实现:

  • 实例
  1. 直接打开模态窗口实例:
<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">&times;</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" 是您想要在页面上加载的模态框的目标。您可以在页面上创建多个模态框,然后为每个模态框创建不同的触发器。现在,很明显,您不能在同一时间加载多个模块,但您可以在页面上创建多个在不同时间进行加载。
  • 在模态框中需要注意两点:
    1. 第一是 .modal,用来把
      的内容识别为模态框。
    2. 第二是 .fade class。当模态框被切换时,它会引起内容淡入淡出。
  • aria-labelledby=“myModalLabel”,该属性引用模态框的标题。
  • 属性 aria-hidden=“true” 用于保持模态窗口不可见,直到触发器被触发为止(比如点击在相关的按钮上)。
  • 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官网

  • 用法

官网中提供了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();
    }

先写到这里,本文代码都在这里

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值