现在都是用的是人家封装的框架什么的,但是对于底层的了解也是必须的,不然就无法提升,下面分享一个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. easy-poi 一对多导出

    参考博客:https://blog.csdn.net/qq_31984879/article/details/102715335

  2. SpringCloud微服务实战——搭建企业级开发框架(五十一):微服务安全加固—自定义Gateway拦截器实现防止SQL注入/XSS攻击

      SQL注入是常见的系统安全问题之一,用户通过特定方式向系统发送SQL脚本,可直接自定义操作系统数据库,如果系统没有对SQL注入进行拦截,那么用户甚至可以直接对数据库进行增删改查等操作.   XSS ...

  3. Vditor在原生JS中如何结合后端使用

    目录 1.Vditor介绍 2.如何在原生JS中结合后端使用 2.1 背景 2.2 正确使用方式 2.2.1 编辑页面 2.2.2 回显页面(修改页面) 2.2.3 预览页面 3.小结一下 1.Vdi ...

  4. springboot---多环境启动命令格式

    一.多环境命令启动 maven插件中首先clean,再package打包,(修改字符集为UTF-8) 使用cmd命令java -jar s(Tab键自动补全)  -spring.profiles.ac ...

  5. Hyper-V由于虚拟机监控程序未运行

    以管理员权限打开命令提示符 输入bcdedit /set hypervisorlaunchtype Auto 重启计算机

  6. win10_Dock安装设置

    1.安装:(在win10上安装) 桌面版:https://www.docker.com/products/docker-desktop, 安装后重启电脑 2.配置 打开DockerDesktop,(可 ...

  7. 三分钟速览GPT系列原理

    其中,Transformer和BERT来自Google,GPT系列[GPT.GPT-1.GPT-2.GPT-3.ChatGPT.GPT-4]来自OpenAI. GPT Paper名为Improving ...

  8. 多表查询和python操作mysql

    目录 多表查询的两种方法 方法1:连表操作 方法2:子查询 小知识点补充说明 可视化软件NaviCat 多表查询练习题 1.查询所有的课程的名称以及对应的任课老师姓名 2.查询平均成绩大于八十分的同学 ...

  9. ChatGPT研究报告:AIGC带来新一轮范式转移

    以ChatGPT为代表的AIGC(人工智能生成内容)将成为新一轮范式转移的开始. 本文约4000字,目标是快速建立AIGC知识体系,含有大量的计算专业名词,建议阅读同时扩展搜索. 一.行业现状 1.概 ...

  10. ubuntu搭建深度学习环境

    安装vscode 方法一: 依次输入如下命令 1.sudo add-apt-repository ppa:ubuntu-desktop/ubuntu-make 2.sudo apt-get updat ...