现在都是用的是人家封装的框架什么的,但是对于底层的了解也是必须的,不然就无法提升,下面分享一个2 years ago 自己封装的一个提示框

样式很简单(适用于任何分辨率)







具体代码如下

/**
* 该js 用于数据加载时给予模态框提示,以增加用户体验
* @since 1.0.1
* @param $ jQuery
* @author dex
* 初创:2017.8.16
* 更改:2017.11.18
* 使用方法:
* $.layer.openMask("正在登陆... ");//显示模态框
* $.layer.setMaskTitle("改变提示语!");//更改提示语
* $.layer.closeMask();//关闭模态框
* $.layer.loading();//打开\关闭加载模态框
*
* $.layer.loading(); // 数据加载框
* $.layer.alert("网络异常!");// 自动关闭提示框
*
* 注意 【background: 'transparent url(./layer/img/loading.gif) no-repeat',】 这路径需要按自己放置目录更改
*/
(function ($) { var layer = {
_init:function(message){//初始化layer
var _html ='<div id="dialog_box"></div><div id="load_box"><span id="load_msg">'
+ message + '</span></div>';
//必须先将_html添加到body,再设置Css样式
$("body").append(_html); GenerateCss();
},
_open:function(message){//显示layer
layer._init(message);
},
_change:function(message){//更改layer
$("#load_msg").html(message);
///定时关闭遮罩...
window.setTimeout(function(){
layer._close();
}, 3000);
},
_close:function(){//关闭layer
if($("#dialog_box").length > 0)
$("#dialog_box,#load_box").remove();
},
_action:function(message){//执行动作
//根据页面是否存在dialog_box来决定调用哪一个方法
if($("#dialog_box").length > 0){
layer._change(message);
}else{
layer._open(message);
}
} }; //生成css
var GenerateCss = function(){
$("#dialog_box").css({ width: 'auto', height: 'auto', zIndex: '99999', position: 'fixed',
filter: 'Alpha(opacity=60)', backgroundColor: 'White', top: '0', left: '0', opacity: '0.4'
}); $("#load_box").css({ zIndex: '999999', position: 'fixed',
backgroundColor: 'black', borderRadius: '8px',textAlign:'center',opacity: '0.6'
}); $("#load_msg").css({ display: 'block', fontSize: '14px', color: 'White',
padding: '10px 15px',
borderRadius: '15px 15px 0 0'
}); var _widht = document.documentElement.clientWidth; //屏幕宽
var _height = document.documentElement.clientHeight; //屏幕高
var boxWidth = $("#load_box").width();
var boxHeight = $("#load_box").height(); //让提示框居中
$("#load_box").css({ top: (_height - boxHeight) / 2 + "px", left: (_widht - boxWidth) / 2 + "px" });
}; var overridMsg = function(message){
message = $.extend({msg:"加载中..."},{msg:message});
layer._action(message.msg);
}; $.extend({
layer: {
setMaskTitle: function (title) {
overridMsg(title);
}, openMask: function (title) {
overridMsg(title);
}, closeMask: function () {
layer._close();
},
loading:function(){
layerLoading._action();
},
alert: function() {// 打开一个默认模态提示框,默认持续 1 秒之后关闭,单位毫秒
var title = arguments[0]?arguments[0]:"";
var timeout = arguments[1]?arguments[1]:1000; overridMsg(title);
setTimeout(function(){layer._close();}, timeout);
}
}
}); var layerLoading = {
_init:function(){//初始化layer
var _html ='<div id="loading_box"></div><div id="loading_inner"></div>';
//必须先将_html添加到body,再设置Css样式
$("body").append(_html); GenerateCssOfLoading();
},
_open:function(){//显示layer
layerLoading._init();
},
_close:function(){//关闭layer
$("#loading_box,#loading_inner").remove();
},
_action:function(){//执行动作
//根据页面是否存在dialog_box来决定调用哪一个方法
if($("#loading_box").length > 0){
layerLoading._close();
}else{
layerLoading._open();
}
}
}; //生成css
var GenerateCssOfLoading = function(){
$("#loading_box").css({ width: '100%', height: '100%', zIndex: '99999', position: 'fixed',
filter: 'Alpha(opacity=60)', backgroundColor: 'White', top: '0', left: '0', opacity: '0.4'
}); $("#loading_inner").css({ width:32,height:32, zIndex: '999999', position: 'fixed',
background: 'transparent url(./layer/img/loading.gif) no-repeat',
textAlign:'center'
}); var _widht = document.documentElement.clientWidth; //屏幕宽
var _height = document.documentElement.clientHeight; //屏幕高
var boxWidth = $("#loading_inner").width();
var boxHeight = $("#loading_inner").height(); //让提示框居中
$("#loading_inner").css({ top: (_height - boxHeight) / 2 + "px", left: (_widht - boxWidth) / 2 + "px" });
}; })(window.jQuery);

资源下载 https://download.csdn.net/download/qq_34817440/11599784

使用js闭包封装一个原生的模态框的更多相关文章

  1. 使用jq把js代码封装一个自己的插件

    为什么要把js功能封装成插件呢?我觉得有以下几点吧 1.最基本的原因就是便于代码复用. 2.便于维护和管理. 3.提升自身的能力. 4.避免各个相同功能组件的干扰,以及一些作用域会相互影响的问题. j ...

  2. js中封装一个自己的简单数学对象

    封装一个数学对象求最大值最小值 <script> var myMath={ PI:3.1415926, max:function(){ var max=arguments[0];//注意a ...

  3. JavaScript封装一个MyAlert弹出框

    平时我们想要显示一些提示信息时会用到alert方法,alert是全局的一个方法,会短暂的中断程序,我们主要用来显示提示客户信息.但是这个方法有一定的局限性,而且本身样式也不够美观.于是我封装了一个实用 ...

  4. vue封装一个简单的div框选时间的组件

    记录一下我前段时间封装的一个vue组件吧.技术需要积累,有时间我把我之前写的还不错的组件都开源出来.并尝试vue和react 两种方式的组件封装.今天简单写下鼠标框选div选中效果的封装吧. div框 ...

  5. 用js写出一个漂亮的单选框选中效果

    一般的input框比较简单,我们可以用JavaScript配合css背景图片定位让我们模拟写出一个点击选中效果 首先需要有个图片素材,当页面加载的时候是背景图片定位到左图,当我们点击图片的时候,背景图 ...

  6. js学习之--Bootstrap Modals(模态框)

    http://www.runoob.com/bootstrap/bootstrap-v2-modal-plugin.html http://outofmemory.cn/bootstrap/tutor ...

  7. [js高手之路]javascript腾讯面试题学习封装一个简易的异步队列

    这道js的面试题,是这样的,页面上有一个按钮,一个ul,点击按钮的时候,每隔1秒钟向ul的后面追加一个li, 一共追加10个,li的内容从0开始技术( 0, 1, 2, ....9 ),首先我们用闭包 ...

  8. JS /CSS 实现模态框(注册和登录组件)

    <!doctype html> <html> <head> <meta charset="utf-8"> <title> ...

  9. js闭包vs Java内部类

    前言: 昨天写了一个关于Java内部的博客,在内部类的最后一点中谈到了Java闭包的概念,他是这样定义闭包的:闭包是一个可调用的对象,它记录了一些信息,这些信息来自创建它的作用域.结合Java的内部类 ...

  10. MVC中调用模态框之后导致JS失效

    今天在工作中碰到一个页面调用模态框之后,页面原来的JS失效的问题,由于前台经验较少,折腾了一天... 问题描述是这样,在页面,有两个下拉列表框A和B,做了下拉列表框联动,有一个button按钮会调用模 ...

随机推荐

  1. 算法学习笔记(20): AC自动机

    AC自动机 前置知识: 字典树:可以参考我的另一篇文章 算法学习笔记(15): Trie(字典树) KMP:可以参考 KMP - Ricky2007,但是不理解KMP算法并不会对这个算法的理解产生影响 ...

  2. 在 k8s(kubernetes)中使用 Loki 进行日志监控

    安装helm环境 [root@hello ~/yaml]# [root@hello ~/yaml]# curl https://baltocdn.com/helm/signing.asc | sudo ...

  3. 使用 LoRA 和 Hugging Face 高效训练大语言模型

    在本文中,我们将展示如何使用 大语言模型低秩适配 (Low-Rank Adaptation of Large Language Models,LoRA) 技术在单 GPU 上微调 110 亿参数的 F ...

  4. 【从零开始】Docker Desktop:听说你小子要玩我

    前言 缘由 捡起遗忘的Docker知识 由于本狗近期项目紧任务重,高强度的搬砖导致摸鱼时间下降.在上线项目时,看到运维大神一系列骚操作,docker+k8s的知识如过眼云烟,忘得干净的很.所以想重新恶 ...

  5. [Asp.Net Core] 网站中的XSS跨站脚本攻击和防范

    漏洞说明: 跨站脚本攻击(Cross Site Scripting),为了不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS.恶意攻击者往 ...

  6. springboot项目 宿舍管理系统 (源码+数据库文件+1w字论文+ppt)

    来了就点个赞再走呗,即将毕业的兄弟有福了文章底部获取源码springboot项目 宿舍管理系统 (源码+数据库文件+1w字论文+ppt)技术框架:java+springboot+vue+mysql后端 ...

  7. 道德与社会问题简报 #3: Hugging Face 上的道德开放性

    使命: 开放和优秀的机器学习 在我们的使命中,我们致力于推动机器学习 (ML) 的民主化,我们在研究如何支持 ML 社区工作并有助于检查危害和防止可能的危害发生.开放式的发展和科学可以分散力量,让许多 ...

  8. Kubernetes中使用Helm2的安全风险

    参考 http://rui0.cn/archives/1573 英文文章  https://blog.ropnop.com/attacking-default-installs-of-helm-on- ...

  9. ArrayList实现原理和自动扩容

    ArrayList在Java集合中的位置, ArrayList原理: transient Object[] elementData; ArrayList通过数组来实现. 默认构造方法会构造一个容量为1 ...

  10. 【Visual Leak Detector】核心源码剖析(VLD 1.0)

    说明 使用 VLD 内存泄漏检测工具辅助开发时整理的学习笔记.本篇对 VLD 1.0 源码做内存泄漏检测的思路进行剖析.同系列文章目录可见 <内存泄漏检测工具>目录 目录 说明 1. 源码 ...