现在都是用的是人家封装的框架什么的,但是对于底层的了解也是必须的,不然就无法提升,下面分享一个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. Spring--事务角色+事务属性

    事务管理员 发起事务方,在Spring中通常指代业务层开启事务的方法 也就是相当于这个: 事务协调员 加入事务方,在Spring中通常指代数据层方法,也可以是业务层方法 也就是相当于这个: 事务相关配 ...

  2. 21.C++的对象模型

    程序1: #pragma warning(disable:4996) //2022年9月21日19:20:29 #include <iostream> using namespace st ...

  3. RPC通信原理概述

    RPC通信原理概述 1.RPC概述 1.什么是RPC RPC(Remote Procedure Call Protocol)远程过程调用协议.它是一种通过网络从远程计算机程序上请求服务,而不需要了解底 ...

  4. ChatGPT|一文读懂GPT-4!

    前言 大家好,今天早上一早醒来,发现各大科技圈公众号平台开始刷屏OpenAI发布的新模型GPT4.0,看这个版本号就已经知道又是一大波特性的更新. 于是立马起来开始学习! GPT-4 发布视频(202 ...

  5. vue环境安装与配置

    https://www.jb51.net/article/251371.htmhttps://www.yht7.com/news/193355 一.下载和安装Vue: https://nodejs.o ...

  6. CTF-RE-学习记录-汇编-2

    汇编工具DTDebug 下载后设置好odd与插件路径,同时在属性中设置为管理员身份运行(无Administrator权限进入的时候一直在提示) 寄存器 存储数据: CPU>内存>硬盘 32 ...

  7. 案例(一) Z-Indexing Geometry

    使用官方github包,部分解释来源于Viewer - Cesium Documentation      Cesium.Ion.defaultAccessToken =         " ...

  8. Springboot整合Jwt实现用户认证

    前言 相信大家在进行用户认证中或多或少都要对用户进行认证,当前进行认证的方式有基于session.token等主流方式,但是目前使用最广泛的还是基于JWT的用户认证,特别适用于前后端分离的项目. 本篇 ...

  9. LeeCode 317周赛复盘

    T1: 可被3整数的偶数的平均值 思路:数组遍历 被3整数的偶数 \(\Leftrightarrow\) 被6整数的数 public int averageValue(int[] nums) { in ...

  10. MIT6.824 Distributed-System(Lab1)-MapReduce

    Lab address: http://nil.csail.mit.edu/6.824/2020/labs/lab-mr.html paper: MapReduce: Simplified Data ...