常见的弹窗技术

本文介绍了两种常用的弹窗技术:BootStrap Modal模态框和Custombox。详细讲解了BootStrap Modal模态框的使用方法及代码示例,并通过实例展示了如何利用JavaScript手动打开模态框。此外,还介绍了Custombox的参数配置和使用方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在这里总结两种弹窗技术,以供学习或复习: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();
    }

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

一个通用的Android端弹窗管理框架,内部维护弹窗优先级队列 具备弹窗管理扩展功能 整合Dialog,PoupoWindow,悬浮Widget,透明Webview,Toast,SnackBar,无需再为繁琐的业务弹窗逻辑所困扰如何添加依赖只需要两行代码轻松接入//add this to your repositories  maven { url 'https://www.jitpack.io' } //add this to your dependencies implementation 'com.github.MrCodeSniper:PopLayer:2.0.0'具体如何使用1.根据策略创建对应的弹窗view//Dialog形式 PopLayerView  mLayerView = new PopLayerView(this,R.layout.common_dialog_upgrade_app); //透明Webview形式 PopLayerView mLayerView = new PopLayerView(this,LayerConfig.redPocketScheme);2.开始装配弹窗配置Popi mUpgradePopi1 = new Popi.Builder()                 .setmPopId(4)//弹窗的唯一标识 当id发生改变 视为新的弹窗                 .setmPriority(2)//优先级这里不具体划分对应的范围 值越小优先级越高                 .setmCancelType(TRIGGER_CANCEL)//弹窗消失的类型分为 TRIGGER_CANCEL(触摸消失) COUNTDOWN_CANCEL (延时消失)                 .setMaxShowTimeLength(5)//最长显示时间(S)                 .setMaxShowCount(5)//最大显示次数                 .setmBeginDate(1548858028)//开始时间 2019-01-30 22:20:28                 .setmEndDate(1548944428)//结束时间 2019-01-31 22:20:28                 .setLayerView(mLayerView)//弹窗View                 .build();3.纳入弹窗管理//纳入弹窗管理 PopManager.getInstance().pushToQueue(mUpgradePopi); //开始显示弹窗 PopManager.getInstance().showNextPopi();效果预览未来的计划逐步统一 其他类型的弹窗 希望能提供给大家一个较为全面的应对业务需求的弹窗管理框架版本记录V1方案版本号LOG进度更新V1.0.0项目开源,完成弹窗管理与Dialog形式扩展Dialog策略扩展完成V1.0.1修复Dialog策略无法获取dialog实体bugDialog策略优化V1.0.2修复activity摧毁造成的弹窗异常 bugDialog策略优化V1.0.3优化了弹窗的使用更加方便快捷框架使用优化V2方案版本号LOG进度更新V2.0.0正式加入透明Webview弹窗策略扩展透明Webview策略扩展完成作者介绍Hello 我叫lalala,如果您喜欢这个项目 请给个star 能follow我那真是太好了!!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值