在bootstrap3.7的基础上自定义模态dialog小工具

移动端实现bootstrap模态框从底部弹出并停靠在底部 我们在H5上可能会用到bootstrap实现如下效果: 1、从底部弹出 设置css: .modal.fade .modal-dialog { transform: translate3d(0, 10vh, 0); } .modal.in .modal-dialog { transform: translate3d(0, 0, 0); } 2、停靠在底部 模态框最外层(#myModal)的样... 阅读详情

背景

今年带技术前端招的都是新人(公司决定),看在我让他们自学VUE和rout累成狗的份上我基本没让他们参与后台管理界面的搭建。但是后台界面又需要像toast,dialog这样的样式,以及vue分页这些小插件,于是便在加班加点的情况下自己基于jquery做了一些小工具,今天主要讲讲对话框,毕竟bootstrap的对话框大家用的还是很多的,写个方法而不需要官网上面那样写html的自定义大多都很繁杂,我也是在看了大量其他人自定义的方法后根据自己的简单需求写的通用的写出来。
看效果图:这个是通过URL显示对话框内容
这里写图片描述

默认对话框

http://v3.bootcss.com/javascript/#modals
官方提供的模态对弹框

<!-- Small modal -->
<button type="button" class="btn btn-primary" data-toggle="modal" data-target=".bs-example-modal-sm">Small modal</button>

<div class="modal fade bs-example-modal-sm" tabindex="-1" role="dialog" aria-labelledby="mySmallModalLabel">
  <div class="modal-dialog modal-sm" role="document">
    <div class="modal-content">
      ...
    </div>
  </div>
</div>

要实现弹框都得自己在页面上写个框的模板,为何这些通用的模板不能封装起来,具体的内容什么的我们自己定义呢,因此我自己写就倒腾出来了,毕竟写JS交互的时候我只想使用个弹窗而已不想再在页面上加html了。
代码如下

/***********
 * jquery 扩展插件
 * 依赖 jquery.js 
 * 自定义bootstrap模态对话框工具
 * @author zjcjava@163.com
 *warning fa-exclamation-triangle
 *sucess fa-check-circle
 *info fa-info-circle
 *erro fa-exclamation-circle
 * @param {Object} $
 */
(function ($) {
    /***********
     * 对话框
     * jquery 扩展插件
     * 依赖 jquery.js 
     * 自定义bootstrap模态对话框工具
     * @author zjcjava@163.com
     * @param 配置文件如下:
     * {title: '标题',
        content: '内容',
        url:'baidu.com',
        width: 600,
        onShow:function(){},//显示时回调方法
        onClose:function(){},//关闭时回调方法
        buttons: [
        {
        html: '<button type="button" class="btn btn-sm btn-primary btn-ok">确定</button>',
        callback: function(){
        //点击确定按钮的回调
            console.log("确定");
        }
        }]}//自定义按钮和点击事件
     * 
     */
    $["xmDialog"] = function(conf){
        if(!conf){
            conf={title:"竹子的标题",content:"hello,竹子"};
        }
        if(!conf.id){
            // 获取当前时间戳(以s为单位)
            var timestamp = Date.parse(new Date());
            conf.id="xm_id_"+timestamp;
        }
        if(!conf.title){
            conf.title="";
        }
        if(!conf.content){
            conf.content="";
        }

        if(conf.width&&conf.width>30){
            conf.width="style='width:"+conf.width+"px;'";
        }
        //显示事件
        if(conf.onShow&&typeof(conf.onShow)!= 'function'){
            //是函数
            throw "conf.onShow is not a function";
            return false;
        }

        //关闭事件
        if(conf.onClose&&typeof(conf.onClose)!= 'function'){
            //是函数
            throw "conf.onClose is not a function";
            return false;
        }

        //按钮
        var buttonHtml="<button type='button' class='btn btn-default' data-dismiss='modal'>关闭</button>";
        if(conf.buttons instanceof Array){
            //是函数
            buttonHtml="";   
        }

        var dialogHtml="<div  id='"+conf.id+"'  class='modal fade' tabindex='-1' role='dialog' aria-labelledby='mySmallModalLabel' aria-hidden='true' > ";
        dialogHtml+="<div class='modal-dialog' "+conf.width+">";
        dialogHtml+="<div class='modal-content'>";

        dialogHtml+="<div class='modal-header'>";
        dialogHtml += "<button type='button' class='close' data-dismiss='modal' aria-hidden='true'>×</button>";
        dialogHtml += "<h4 class='modal-title' id='myModalLabel'>"+conf.title+"</h4>";
        dialogHtml += "</div>";

        dialogHtml += "<div class='modal-body'>";
        dialogHtml += conf.content;
        dialogHtml += "</div>";

        dialogHtml += "<div class='modal-footer'>";
        dialogHtml += buttonHtml;
        //dialogHtml += "<button type='button' class='btn btn-primary'>提交更改</button>";
        dialogHtml += "</div>";

        dialogHtml+="</div>";
        dialogHtml+="</div>";
        dialogHtml+="</div>";

        var dialogObj=$(dialogHtml);

        //添加URL内容
        if(conf.url){
            dialogObj.find(".modal-body").load(conf.url);
        }
        //添加button并绑定事件
        if(conf.buttons instanceof Array){
            //是函数
            for(var o in conf.buttons){  
                var btObj=$(conf.buttons[o].html);

                if(typeof(conf.buttons[o].callback)== 'function'){
                    btObj.on("click",function(){
                       conf.buttons[o].callback();
                        $('#'+conf.id).modal('hide');
                    });
                }
                dialogObj.find(".modal-footer").append(btObj);

            }   
        }


        $("body").append(dialogObj);
        $('#'+conf.id).modal('show');
        $('#identifier').on('show.bs.modal', function () {
              // 执行一些动作...
            if(typeof(conf.onShow)== 'function'){
                conf.onShow();
            }
        });
        $('#'+conf.id).on('hidden.bs.modal', function () {
              // 执行一些动作...
            $('#'+conf.id).remove();
            if(typeof(conf.onClose)== 'function'){
                conf.onClose();
            }

        })
    };



}( jQuery ));

直接调用就可以弹出默认的框框了;
$.xmDialog()

<button type="button" onclick=" $.xmDialog();">对话框</button>

//在js中直接调用,需要加入jquery和bootstarp的文件
$.xmDialog()

这里写图片描述

实现自定义对话框和回调方法

var conf={title: '竹子提问',
        content: '你是单身狗么',
        onShow:function(){},//显示时回调方法
        onClose:function(){},//关闭时回调方法
        buttons: [
        {
        html: '<button type="button" class="btn btn-sm btn-primary btn-ok">不是</button>',
        callback: function(){
        //点击确定按钮的回调
            console.log("不是才怪");
        }},{
        html: '<button type="button" class="btn btn-sm btn-primary btn-ok">确定</button>',
        callback: function(){
        //点击确定按钮的回调
            console.log("哈哈单身狗好啊");
        }}
        ]};

自定义文本内容
这里写图片描述


var conf={title: '竹子',
        url: 'http://localhost:8080/xm-web-sys/',
        onShow:function(){},//显示时回调方法
        onClose:function(){},//关闭时回调方法
        buttons: [
        {
        html: '<button type="button" class="btn btn-sm btn-primary btn-ok">确定</button>',
        callback: function(){
        //点击确定按钮的回调
            console.log("哈哈单身狗好啊");
        }}
        ]};

自定义URL的链接内容

这里写图片描述

Bootstrap 模态框(Modal)深度解析:7种高级用法 Bootstrap模态框的基础用法(如通过触发、基础样式配置)在官方文档中已有详细说明,但实际开发中我们常遇到更复杂的需求:动态生成模态内容、多层嵌套模态、与表单验证深度集成、自定义动画效果等。本文将聚焦这些「官方文档没说透」的场景,结合源码级解析和实战案例,帮你掌握模态框的「进阶生存技能」。本文将按照「原理拆解→高级用法→实战案例→避坑指南」的逻辑展开:首先用「快递柜取件」的生活案例类比模态框工作原理;然后通过7个具体场景(动态创建、嵌套模态等)讲解高级用法,每个场景包含代码示例和底层逻辑分析; 阅读详情

相关推荐

TVS 和压敏电阻联合使用进行浪涌保护时,压敏电阻的压敏电压要低于TVS 的钳位电压 VC。

通过先让MOV接管,可以确保在大多数情况下,电压不会迅速上升到TVS二极管的钳位电压,从而保护TVS二极管免受持续高能量冲击的损害。总结来说,将MOV的压敏电压设置得低于TVS二极管的钳位电压,可以提供一种分级的保护机制,优化浪涌保护性能,同时保护敏感的TVS二极管不被过度的能量冲击损坏,并延长其使用寿命。MOV吸收的能量(Wmov):假设浪涌电流为10kA,MOV导通后将电压限制在300V,那么Wmov = Ipp * Vmov = 10kA * 300V = 3MW。例如,Vmov可以设定为275V。

weixin_66642980的博客 2244

Vue3控制模态框打开关闭的三种方法

主要讲了实现控制子组件的模态框打开关闭的三种方法

Anorry的博客 4651

RTL8211F千兆PHY原理图与PCB设计:从手册到量产的完整指南

在工业网关、边缘计算和FPGA/CPU以太网扩展设计中,千兆PHY芯片的稳定运行取决于外围电路的精细设计。RTL8211F(I)作为应用广泛的物理层收发器,其原理图设计涉及电源域划分、时钟与复位时序、RGMII/ MDIO接口匹配以及MDI差分网络等多个环节。正确理解数据手册的阅读顺序,掌握100Ω差分阻抗控制、等长约束和EMI布局技巧,是保证链路可靠性和信号完整性的关键。本文从芯片选型与数据手册解析切入,系统梳理从电源去耦到PCB布局布线的工程实践要点,帮助工程师规避Link不稳定、MDIO读取失败、吞吐

weixin_28721917的博客 348

bootstrap-fileinput模态框导入Excel完整示例

本文对原文章中的jsp导入页面进行了优化,添加了模态框,从模态框进行导入;对excel文件进行区别取数据。 转自:http://www.cnblogs.com/zhaohz/p/7259128.html 1.下载bootstrap-fileinput-4.3.2 2.引入: 1 2 3 link rel="stylesheet" hr

a510750的专栏 8068

四、Burpsuite工具之proxy模块详解-intercept功能

过了一个年,感觉好久都没有更新了,今天就从burpsuite的更新开始吧。前面已经说过了burpsuite的安装和proxy代理的配置,今天说一下proxy模块中非常有用的intercept功能。intercept是拦截的意思,在这里相当于拦截请求,可以实时的对请求进行拦截,然后请求参数的篡改,再把请求放通,从而达到实时修改请求的功能intercept的总体界面如下图所示其中下图红框中是可以修改请求目标的相关信息。

SmileAssassn的博客 1661

正交试验-方差分析-数据展现形式

方差分析(ANOVA, Analysis of Variance)用于比较多个组之间的均值差异,确定因素对响应变量的显著性影响。示例分析。

m0_58326994的博客 1967

使用Vue 3创建一个可复用的模态窗口组件,包含基础的打开和关闭功能

通过以上步骤,你已经成功创建了一个可复用的Vue 3模态窗口组件,并在父组件中引用和使用它。这个模态窗口组件能够通过插槽自定义内容,同时提供了基础的打开和关闭功能。如果你需要一个更复杂的模态窗口组件,可以在此基础上进行扩展,例如添加事件监听、动画效果等。最后问候亲爱的朋友们,并邀请你们阅读我的全新著作。

有我更精彩的博客 989

电商行业分析爬虫:抓取行业数据,进行行业分析

电商行业数据分析对于市场研究、竞争分析和商业决策至关重要。通过爬取电商平台的数据,我们可以深入了解市场动态、消费者行为和商品销售情况。本文将介绍如何构建一个电商行业分析爬虫,抓取商品信息、销售数据和用户评价等,并进行数据分析。

u014481728的博客 1627

vue3编程 -动态多开模态框实现方案

采用v-for提前生成多个模态框实例,采用这种方案的案例社区已经很多。

Mercuryyjs的博客 874

Scratch全攻略:从入门到实践的编程之旅

Scratch 是一款由麻省理工学院(MIT)开发的图形化编程工具 ,它诞生的初衷是为了让编程教育更加普及,尤其是让孩子们能够轻松接触和学习编程。与传统的基于文本代码的编程方式不同,Scratch 通过将编程指令以图形化的积木形式呈现,极大地降低了编程的门槛,让编程变得如同搭积木一样简单有趣。

邓邓子的博客 1万+

Python 爬虫实战:全球渔业船舶捕捞记录数据采集与分析全攻略

通过本项目,我们实现了对全球渔业船舶捕捞记录数据的采集、处理和可视化,为渔业资源管理和海洋生态保护提供了数据支持。未来,可以进一步结合机器学习和深度学习技术,对捕捞行为进行预测和分类,提高对非法捕捞活动的识别能力。

2201_76125261的博客 554

循序渐进VUE+Element 前端应用开发(6)--- 常规Element 界面组件的使用

转载   原文作者:伍华聪    原文地址:https://www.cnblogs.com/wuhuacong/p/13031717.html 文章目录1、列表界面和其他模块展示处理2、常规界面组件的使用1)表单和表单项、单文本框2)、下拉列表控件的绑定3)、图片展示4)、第三方扩展控件3、自定义组件的创建使用 在我们开发BS页面的时候,往往需要了解常规界面组件的使用,小到最普通的单文本输入框、多文本框、下拉列表,以及按钮、图片展示、弹出对话框、表单处理、条码二维码等等,本篇随笔基于普通表格业务的展.

三分恶的博客 1193

AI 时代嵌入式工程师的能力模型与学习路线:全系列收官

AI 时代嵌入式工程师的能力模型与学习路线:全系列收官

weixin_42162924的博客 31

bootstrap 彈窗默認打開_一款轻量级的Bootstrap 3模态弹窗插件--bootstrap3-dialog

Web开发中,模态弹窗应该是避免不了的事情,提示消息,确认操作等都需要使用到弹窗。那么,如果你在项目开发中使用了bootstrap前端框架呢,弹窗这件事情又如何处理?是用bootstrap官方提供的,还是自己封装?这里给大家推荐一款已经成熟的Bootstrap 3轻量级模态弹窗插件--bootstrap3-dialog。当然,bootstrap3的弹窗插件还有其他的,有兴趣的话,大家可以自己搜索一...

weixin_30510711的博客 590

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

bootstrap 模态框 关闭 灰色_Dialog 弹出框

介绍弹出模态框,常用于消息提示、消息确认,或在当前页面内完成特定的交互操作。弹出框组件支持函数调用和组件调用两种方式。函数调用Dialog 是一个函数,调用后会直接在页面中弹出相应的模态框。import { Dialog } from 'vant';Dialog({ message: '提示' });组件调用通过组件调用 Dialog 时,可以通过下面的方式进行注册:import Vue from...

weixin_39592137的博客 569

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

BootStrap的动态模态框及静态模态框

1.要用bootStrap这个框架就必须要重载它的class类,也就是说class要一样 代码如下: 有疑问的可以在下面留言,欢迎大家一起交流 1.1动态模态框 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta ...

diaofu4842的专栏 573

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Bootstrap 模态框中加入的按钮不能实现点击事件?获取不到模态框中的内容?

Bootstrap 模态框中加入的按钮不能实现点击事件?获取不到模态框中的内容? 问题描述: 小编在使用Bootstrap的过程中,遇到了一个百思不得其解的问题。在.modal-footer的div里边放置了 两个<button>的按钮,但是在给其添加按钮的点击事件的时候总是失败(事件不被执行)。然后尝试获取 .modal-body的div里的内容也是失败。 原因: <div ...

Duktig的博客 8304

bootstrap 模态框

(1)modal 声明一个模态框(2)modal-dialog 定义模态框尺寸(3)modal-lg 定义大尺寸模态框(4)modal-sm 定义小尺寸模态框(5)modal-header (6)modal-body(7)modal-footer <!doctype html><html><head><meta charset="utf-8">&l...

weixin_34248258的博客 128

基于JQuery 改造bootstrap模态框拖动功能

看不爽现有的bootstrap拖动实现,自己也手痒,就自己写了一个拖动处理。 PS:这是别人介绍的拖动实现 http://www.gbtags.com/gb/rtreplayerpreview/230.htm JQuery版本1.7.2 Bootstrap版本3.3.4 html代码(就是普通的模态框代码) <div class="modal fade" id="modalI

ok123zxx的博客 8019

Bootstrap Accessibility Plugin完全指南:让Bootstrap 3组件秒变无障碍友好 [特殊字符]

**Bootstrap Accessibility Plugin** 是由PayPal无障碍团队开发的强大工具,专门为Bootstrap 3框架的JavaScript组件提供无障碍访问支持。这个插件能够自动为Bootstrap组件添加ARIA属性和键盘导航功能,让网站对键盘用户和屏幕阅读器用户更加友好,同时完全不影响网站的性能和视觉布局。 ## 📋 为什么需要无障碍访问? 在现代Web开发中

gitblog_01033的博客 502

Bootstrap模态框修改出现的位置和大小

<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Bootstrap 实例 - 模态框(Modal)插件事件</title> <link rel="stylesheet" href="http://cdn.sta...

weixin_30436891的博客 1773

Bootstrap Accessibility Plugin常见问题解答:新手必看指南 [特殊字符]

Bootstrap Accessibility Plugin是PayPal团队开发的一款为Bootstrap 3组件提供无障碍访问支持的插件。如果你正在使用Bootstrap构建网站,并且希望确保所有用户(包括使用键盘导航和屏幕阅读器的用户)都能顺畅访问你的网站组件,那么这个插件就是你的理想选择!✨ ## 什么是Bootstrap Accessibility Plugin?🤔 **Boots

gitblog_00944的博客 1086

Bootstrap Accessibility Plugin支持哪些组件?8大无障碍增强功能详解

Bootstrap Accessibility Plugin是PayPal无障碍团队专为Bootstrap 3开发的一款重要插件,它能显著提升网站对键盘和屏幕阅读器用户的友好性。这款插件通过智能添加ARIA属性、改进键盘导航和增强视觉对比度,让Bootstrap组件真正实现无障碍访问。对于希望创建包容性网站的前端开发者来说,这个插件是必不可少的工具。 ## 🎯 为什么需要无障碍插件? 在当今

gitblog_00113的博客 1153

bootstrap-href触发模态弹出窗元素

1.运行效果如图所示 2.实现代码如下 <!DOCTYPEhtml> <html> <head> <metacharset="utf-8"> <metahttp-equiv="X-UA-Compatible"content="IE=edge"> <t...

weixin_34138056的博客 1579

bootstrap模态框放中间_Bootstrap模态框(modal)垂直居中

有段日子没有写文章可,或许因为工作忙的原因,或者没有什么可写的内容等等,其实这些无非都是为自己找的一种借口。正如经常说的一句话:海绵里面的水挤挤还是有的,时间挤挤也会有的。这说明的问题只能是自己懒惰的原因,如果每天都在学习,或者水深火热沉浸在项目中,让你可写的内容还是挺多了,可以记录自己的学习过程,可以记录项目开发过程中自己负责的内容,……自己目前参与的项目中用到的技术还是挺多了,比如:Boots...

weixin_30631909的博客 328

对话框弹出(Bootstrap)

HTML 点击我 ×Close 模态弹出窗标题 模态弹出窗主体内容 关闭 保存 $(function(){ $(".btn").click(function(){ $("#mymodal").modal("toggl

Vivianluolita的专栏 7778
上一篇: springmvc4.3和3.0配置的不同
下一篇: Springboot在tomcat下启动
牧竹子
博客等级 码龄17年 572粉丝 233原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值