JS Loading功能的简单实现


Posted in Javascript onNovember 29, 2013

我们经常在浏览网页的时候会看到数据在加载时,出现的LOADING提示。其实这个功能原理是很简单的,就是一个DIV遮盖当前页面,然后Loading就在遮盖DIV层上展示出来,现在我们来动手实现一下。

1.当前页面:

<div class="current"><a href="#" onclick="showLoading()">Loading</a></div>

2.遮罩层:
<div id="over" class="over"></div>

3.Loading展示层:
<div id="layout" class="layout"><img src="//img.jbzj.com/file_images/article/201311/2013112931.gif" alt="" /></div>

整体代码:
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title></title>
    <style type="text/css">
        .current a {
            font-size: 20px;
        }
        .over {
            display: none;
            position: absolute;
            top: 0;
            left: 0;
            width: 100%;
            height: 100%;
            background-color: #f5f5f5;
            opacity:0.5;
            z-index: 1000;
        }
        .layout {
            display: none;
            position: absolute;
            top: 40%;
            left: 40%;
            width: 20%;
            height: 20%;
            z-index: 1001;
            text-align:center;
        }
    </style>
    <script type="text/javascript">
        function showLoading()
        {
            document.getElementById("over").style.display = "block";
            document.getElementById("layout").style.display = "block";
        }
    </script>
</head>
<body>
    <div class="current"><a href="#" onclick="showLoading()">Loading</a></div>
    <div id="over" class="over"></div>
    <div id="layout" class="layout"><img src="//img.jbzj.com/file_images/article/201311/2013112931.gif" alt="" /></div>
</body>
</html>

最终效果:
JS Loading功能的简单实现

在网上还看到另外一种实现方式,感觉思路不错,就是利用JS不断的改变html标签的value值,达到加载提示的效果,根据他的思路我自己实现了下,代码如下:

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title></title>
    <!-- <script src="Scripts/jquery-1.8.2.js"></script>-->
    <style type="text/css">
        #tb {
            width: 100%;
            height: 100%;
            line-height: 10px;
        }
            #tb tr td {
                text-align: center;
            }
        .progressbar {
            font-family: Arial;
            font-weight: bolder;
            color: gray;
            background-color: white;
            padding: 0px;
            border-style: none;
        }
        .percent {
            font-family: Arial;
            color: gray;
            text-align: center;
            border-width: medium;
            border-style: none;
        }
    </style>
    <script type="text/javascript">
        var bar = 0;
        var step = "||";
        /*
        *第一种方式即 :$(document).ready(function(){.....});
        */
        //$(function () {
        //    progress();
        //});
        /*
        *第二种方式 
        */
        //window.onload = function () {
        //    progress();
        //}
        /*
        *第三种方式模拟 $(document).ready(function(){.....});
        */
        (function () {
            var ie = !!(window.attachEvent && !window.opera);
            var wk = /webkit\/(\d+)/i.test(navigator.userAgent) && (RegExp.$1 < 525);
            var fn = [];
            var run = function () { for (var i = 0; i < fn.length; i++) fn[i](); };
            var d = document;
            d.ready = function (f) {
                if (!ie && !wk && d.addEventListener)
                    return d.addEventListener('DOMContentLoaded', f, false);
                if (fn.push(f) > 1) return;
                if (ie)
                    (function () {
                        try { d.documentElement.doScroll('left'); run(); }
                        catch (err) { setTimeout(arguments.callee, 0); }
                    })();
                else if (wk)
                    var t = setInterval(function () {
                        if (/^(loaded|complete)$/.test(d.readyState))
                            clearInterval(t), run();
                    }, 0);
            };
        })();
        document.ready(function () {
            progress();
        });

        function progress() {
            bar = bar + 2;
            step = step + "||";
            document.getElementById("percent").value = bar + "%";
            document.getElementById("progressbar").value = step;
            if (bar <= 98) {
                setTimeout("progress()", 100);
            }
        }
    </script>
</head>
<body>
    <table id="tb">
        <tr>
            <td>
                <input type="text" size="50" class="percent" id="percent" /></td>
        </tr>
        <tr>
            <td>
                <input type="text" size="50" class="progressbar" id="progressbar" /></td>
        </tr>
    </table>
</body>
</html>

最终效果:

JS Loading功能的简单实现

Javascript 相关文章推荐
javascript 处理HTML元素必须避免使用的一种方法
Jul 30 Javascript
jQuery 获取对象 定位子对象
May 31 Javascript
14个有用的Jquery技巧分享
Jan 08 Javascript
javascript数组去重方法汇总
Apr 23 Javascript
JS中判断字符串中出现次数最多的字符及出现的次数的简单实例
Jun 03 Javascript
axios 处理 302 状态码的解决方法
Apr 10 Javascript
redux中间件之redux-thunk的具体使用
Apr 17 Javascript
vue自动化表单实例分析
May 06 Javascript
Vue-cli3项目配置Vue.config.js实战记录
Jul 29 Javascript
浅谈Vue组件及组件的注册方法
Aug 24 Javascript
vue路由跳转传参数的方法
May 06 Javascript
webpack3.0升级4.0的方法步骤
Apr 02 Javascript
分享Javascript中最常用的55个经典小技巧
Nov 29 #Javascript
浅析JavaScript中的类型和对象
Nov 29 #Javascript
JavaScript中创建类/对象的几种方法总结
Nov 29 #Javascript
转换字符串为json对象的方法详解
Nov 29 #Javascript
javascript对下拉列表框(select)的操作实例讲解
Nov 29 #Javascript
js 定时器setTimeout无法调用局部变量的解决办法
Nov 28 #Javascript
jquery使用淘宝接口跨域查询手机号码归属地实例
Nov 28 #Javascript
You might like
php面向对象全攻略 (三)特殊的引用“$this”的使用
2009/09/30 PHP
php知道与问问的采集插件代码
2010/10/12 PHP
php解析url并得到url中的参数及获取url参数的四种方式
2015/10/26 PHP
PHP中多线程的两个实现方法
2016/10/14 PHP
PHP解压ZIP文件到指定文件夹的方法
2016/11/17 PHP
Javascript 陷阱 window全局对象
2008/11/26 Javascript
JS学习之一个简易的日历控件
2010/03/24 Javascript
页面定时刷新(1秒刷新一次)
2013/11/22 Javascript
使用jQuery实现星级评分代码分享
2014/12/09 Javascript
node.js中的console.dir方法使用说明
2014/12/10 Javascript
JavaScript获取伪元素(Pseudo-Element)属性的方法技巧
2015/03/13 Javascript
js实现类似MSN提示的页面效果代码分享
2015/08/24 Javascript
创建基于Bootstrap的下拉菜单的DropDownList的JQuery插件
2016/06/02 Javascript
利用angular.copy取消变量的双向绑定与解析
2016/11/25 Javascript
JS插件plupload.js实现多图上传并显示进度条
2016/11/29 Javascript
JavaScript实现获取select下拉框中第一个值的方法
2018/02/06 Javascript
vue.extend与vue.component的区别和联系
2018/09/19 Javascript
vue中axios的二次封装实例讲解
2019/10/14 Javascript
vue props 一次传多个值实例
2020/07/22 Javascript
js实现盒子拖拽动画效果
2020/08/09 Javascript
python Matplotlib画图之调整字体大小的示例
2017/11/20 Python
Python基于opencv实现的简单画板功能示例
2019/03/04 Python
windows 10 设定计划任务自动执行 python 脚本的方法
2019/09/11 Python
使用Python和OpenCV检测图像中的物体并将物体裁剪下来
2019/10/30 Python
python多维数组分位数的求取方式
2020/03/03 Python
Python logging自定义字段输出及打印颜色
2020/11/30 Python
python中判断数字是否为质数的实例讲解
2020/12/06 Python
Autopep8的使用(python自动编排工具)
2021/03/02 Python
.NET remoting中对象激活的两种方式
2015/06/08 面试题
医院护士求职自荐信格式
2013/09/21 职场文书
闭幕式主持词
2014/04/02 职场文书
大型活动组织方案
2014/05/10 职场文书
总经理岗位职责说明书
2014/07/30 职场文书
法人委托书范本
2014/09/15 职场文书
先进事迹材料范文
2014/12/29 职场文书
担保公司2015年终工作总结
2015/10/14 职场文书