简单的ajax遮罩层(加载进度圈)cvi_busy_lib.js

cvi_busy_lib.js:

cvi_busy_lib.js 是一个基于ajax的遮罩js,遮罩区域为body区域。使用比较简单。

效果:

在下面的Js代码,标注为红色标记为需要设置的参数。

1、getBusyOverlay(id, overlay, busy) 为遮罩层的方法,

id:需要写viewport,详情请看Js内部。

overlay:主要是遮罩层的样式,遮罩层显示字体的样式。

busy:加载进度圈的样式。

2、xval.settext("正在登录,请稍后......");  此处需要写在beforeSend中,在ajax执行前,设置想要显示的文字。(参数可不写)

3、xval.remove();                 当ajax得到返回数据的时候,取消遮罩层,恢复正常页面模样。

return {
            remove: function() {
                if (waiting) {
                    waiting = false;
                    ctrl.stop();
                    delete ctrl;
                    parent.removeChild(outer); //去掉遮罩层
                    if (parent.id == ‘viewport‘) {
                        parent.style.display = ‘none‘; //隐藏div
                    }
                }
            },
            settext: function(v) {
                if (string && typeof (v) == ‘string‘) {
                    string.firstChild.innerHTML = v;//给文字层的div赋值
                    return false;
                }
            }
        };

Js代码:

<script src="/static/js/cvi_busy_lib.js"></script>

<script type="text/javascript">

//方法默认是,给body添加一个div,然后整个body都是遮罩层。
//getBusyOverlay需要3个参数
//参数一:viewport为创建遮罩层的div,
//参数二:color:‘white‘,               背景色
//       opacity:0.75,                透明度:从 0.0 (完全透明)到 1.0(完全不透明)
//       text:‘viewport: loading...‘, 默认显示的提示文字,这里是viewport: loading...
//       style:‘text-shadow: 0 0 3px black;font-weight:bold;font-size:16px;color:white‘ 字体样式
//参数三:color:‘#ff0‘,   进度圈颜色//       size:100,       进度圈大小//       type:‘o‘        有5种类型,c,o,p,t,以及默认类型,具体请看js内部方法getBusyVL。
var xval = getBusyOverlay(‘viewport‘, { color: ‘white‘, opacity: 0.75, text: ‘viewport: loading...‘, style: ‘text-shadow: 0 0 3px black;font-weight:bold;font-size:16px;color:white‘ }, { color: ‘#ff0‘, size: 100, type: ‘o‘ });
$.ajax({
    url: "/Home/Index",
    type: "POST",
    dataType: "json",
    beforeSend: function() {
        if (xval) {
            xval.settext("正在登录,请稍后......");//此处可以修改默认文字,整个beforeSend方法不加的话,就按照默认文字来。
        }
    },
    data: { id: id },
    success: function(data) {
        xval.remove(); //此处是移除遮罩层
    }, error: function() {
        xval.remove(); //此处是移除遮罩层
    }
});

局部遮罩Js改进:

cvi_busy_lib.js只能给body加遮罩层为全页面遮罩,如果需要给某个区域增加遮罩层,需更改getBusyOverlay方法。

以下为局部代码,详细代码请在文章末尾下载:

//创建id为viewport的DIV,并为其赋样式
if (divId != "") {
    //新写的
    viewport = document.createElement(‘div‘); //不存在则创建
    viewport.id = ‘viewport‘;
    cz = viewport.style; //开始设置div样式
    cz.backgroundColor = ‘transparent‘; //属性设置元素的背景颜色,transparent默认。背景颜色为透明
    cz.position = ‘relative‘; //一个固定定位(position属性的值为fixed)元素会相对于视窗来定位,这意味着即便页面滚动,它还是会停留在相同的位置。
    cz.overflow = ‘hidden‘; //内容会被修剪,并且其余内容是不可见的。
    cz.display = ‘block‘; //此元素将显示为块级元素,此元素前后会带有换行符。
    cz.zIndex = 999999;
    cz.left = ‘0px‘;
    cz.top = ‘0px‘;
    cz.zoom = 1;
    cz.width = ‘100%‘;
    cz.height = document.getElementById(divId).offsetHeight == 0 ? ‘150px‘ : document.getElementById(divId).offsetHeight - 10 + ‘px‘;
    cz.margin = ‘0px‘; //外边距
    cz.padding = ‘0px‘; //内边距
    document.getElementById(divId).appendChild(viewport);
    parent = viewport; //给parent赋予div的意义
} else {
    //原逻辑
    if (id == ‘viewport‘) {
        viewport = document.getElementById(‘viewport‘); //获取DOM对象
        if (!viewport) {
            viewport = document.createElement(‘div‘); //不存在则创建
            viewport.id = ‘viewport‘;
            cz = viewport.style; //开始设置div样式
            cz.backgroundColor = ‘transparent‘; //属性设置元素的背景颜色,transparent默认。背景颜色为透明
            cz.position = ‘fixed‘; //一个固定定位(position属性的值为fixed)元素会相对于视窗来定位,这意味着即便页面滚动,它还是会停留在相同的位置。
            cz.overflow = ‘hidden‘; //内容会被修剪,并且其余内容是不可见的。
            cz.display = ‘block‘; //此元素将显示为块级元素,此元素前后会带有换行符。
            cz.zIndex = 999999;
            cz.left = ‘0px‘;
            cz.top = ‘0px‘;
            cz.zoom = 1;
            cz.width = ‘100%‘;
            cz.height = ‘100%‘;
            cz.margin = ‘0px‘; //外边距
            cz.padding = ‘0px‘; //内边距
            if (document.all && !window.opera && !window.XMLHttpRequest) {//此处走不通,!window.XMLHttpRequest=false
                cz.position = ‘absolute‘;
                if (typeof document.documentElement != ‘undefined‘) {
                    cz.width = document.documentElement.clientWidth + ‘px‘;
                    cz.height = document.documentElement.clientHeight + ‘px‘;
                }
                else {
                    cz.width = document.getElementsByTagName(‘body‘)[0].clientWidth + ‘px‘;
                    cz.height = document.getElementsByTagName(‘body‘)[0].clientHeight + ‘px‘;
                }
            }
            document.getElementsByTagName("body")[0].appendChild(viewport); //创建的viewportDIV添加到body中
        } else {
            viewport.style.display = ‘block‘;
            if (document.all && !window.opera && !window.XMLHttpRequest) {
                if (typeof document.documentElement != ‘undefined‘) {
                    viewport.style.width = document.documentElement.clientWidth + ‘px‘;
                    viewport.style.height = document.documentElement.clientHeight + ‘px‘;
                }
                else {
                    viewport.style.width = document.getElementsByTagName(‘body‘)[0].clientWidth + ‘px‘;
                    viewport.style.height = document.getElementsByTagName(‘body‘)[0].clientHeight + ‘px‘;
                }
            }
        }
        parent = viewport; //给parent赋予div的意义
    }
}

在getBusyOverlay方法中,我添加了一个div的id参数,创建遮罩的时候,以div为父体遮罩这个div。这样可以实现局部遮罩。

还修改了进度圈的样式,修改内容可自行比对原Js。

一些注释可能写的不对,请谅解。



相关文章https://www.cnblogs.com/holdon521/p/4661240.html

   原Js下载地址:https://files.cnblogs.com/files/cang12138/cvi_busy_lib.js

改进Js下载地址:https://files.cnblogs.com/files/cang12138/cvi_busy_lib%E6%94%B9.js

时间: 2024-10-15 01:01:37

简单的ajax遮罩层(加载进度圈)cvi_busy_lib.js的相关文章

网页加载进度条的JS程序开发思路与实际应用

一款好的产品,都需要有一个漂亮的loading界面.lodaing界面不仅能给用户带来良好的体验,而且有效的消除了程序加载等待过程中的枯躁感. loading进度条更是对当前加载进度的一个良好反馈.从0%-100%的加载进度可以有效的告知用户还有多久即可打开页面.带有进度条的loading界面在程序中并不罕见,但是在web中呢?到目前为止浏览器并没有提供有效的浏览器对象来反馈页面的加载进度,所以无法直接.便捷的获得页面加载进度的反馈.本文主要是讲述如何以通过jquery的方式来实现页面加载进度的

网站顶部显示预加载进度条preload.js

网站加载的速度快的话,不会显示进度条加载时候的样式. 支持性主流浏览器都支持,ie浏览器需要9以上9也支持. 使用方法 <script src="http://code.jquery.com/jquery-1.7.1.min.js"></script> <script src="js/preload.js"></script> <script type="text/javascript">

加载进度圈,带遮罩层(jquery)

如图: Js下载地址:http://files.cnblogs.com/files/holdon521/cvi_busy_lib.js 如下使用实例: <script src="/static/js/cvi_busy_lib.js"></script> <script type="text/javascript"> var xval=getBusyOverlay('viewport',{color:'white', opacity

插件二之页面加载进度条pace.js

关于pace.js pace.js包含14样式,每种样式可以自定义颜色,官方下载中提供了几种颜色的主题,使用方式也很简单,引入pace的js文件跟所需样式文件即可 <link rel="stylesheet" href="../themes/pace-theme-center-circle.css" /> <script src="../pace.js"></script> 各样式ie下兼容要求 <!--

Android 自定义View修炼-自定义加载进度动画LoadingImageView

一.概述 本自定义View,是加载进度动画的自定义View,继承于ImageView来实现,主要实现蒙层加载进度的加载进度效果. 支持水平左右加载和垂直上下加载四个方向,同时也支持自定义蒙层进度颜色. 直接看下面的效果图吧. 二.效果图 废话不说,先来看看效果图吧~~ 三.实现原理方案 1.自定义View-XCLoadingImageView,继承ImageVIew来实现,这样就不用自己再处理drawable和测量的工作内容. 2.根据蒙层颜色创建一个蒙层bitmap,然后根据这个bitmap来

lufylegend:加载进度

实现图片加载进度 LoadingSample Class 用来显示进度条的对象. 引擎中目前提供的进度条类有:LoadingSample1-7 你可以制作自己的进度条,自制进度条类中要包含setProgress函数. //初始化引擎组件 init(50, "div_caiquan", 800, 400, main); //定义游戏层,加载进度层.游戏背景层 var loadingLayer, backLayer; //定义游戏图片 //定义图片资源加载完成后返回的图片对象 var im

ajax页面加载进度条插件

下面两个都是youtube视频的加载进度条效果的ajax插件 一.官网:http://ricostacruz.com/nprogress/官网 github:https://github.com/rstacruz/nprogress/ 二.http://www.onextrapixel.com/2013/09/02/loadingbar-js-adding-a-youtube-like-loading-bar-to-your-website/

js 利用 ajax 加载 js ,显示加载进度 ,严格按照js的顺序先后加载到页面

js 利用 ajax 加载 js ,显示加载进度 ,严格按照js的顺序先后加载到页面 , 做手机端开发时,发现一个问题,有些浏览器,在网速比较慢的情况下,js文件没有加载完,后续的调用已经开始调用了,导致出错.后来使用此法,保证了任何时候都完全是按照js的先后顺序执行的. 源码: /** * js 利用 ajax 加载 js ,显示加载进度 ,严格按照js的顺序先后加载到页面 * 原理:利用 ajax 异步多线程快速加载, 每个文件加载完成后存入到加载完成数组中, * 显示到页面时完全按传入的顺

简单的遮罩层加登录窗效果

<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>遮罩层加登录窗</title> <style type="text/css"> #wrap{width: 60px;height: 30px; position: absolute; text-align: center; line-height: 30px;