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 相关文章推荐
Track Image Loading效果代码分析
Aug 13 Javascript
jquery.cvtooltip.js 基于jquery的气泡提示插件
Nov 19 Javascript
深入理解JQuery keyUp和keyDown的区别
Dec 12 Javascript
使用JQuery实现Ctrl+Enter提交表单的方法
Oct 22 Javascript
js获取css的各种样式并且设置他们的方法
Aug 22 Javascript
javaScript实现鼠标在文字上悬浮时弹出悬浮层效果
Apr 12 Javascript
JavaScript 正则命名分组【推荐】
Jun 07 Javascript
Angular使用cli生成自定义文件、组件的方法
Sep 04 Javascript
vue中el-upload上传图片到七牛的示例代码
Oct 19 Javascript
使用layer模态框给新页面传值的方法
Sep 27 Javascript
解决vue-router 嵌套路由没反应的问题
Sep 22 Javascript
Vue的列表之渲染,排序,过滤详解
Feb 24 Vue.js
分享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代码的50个实用技巧必备(上)
2016/01/22 PHP
关于PHP通用返回值设置方法
2017/03/31 PHP
jQuery 获取URL的GET参数值的小例子
2013/04/18 Javascript
jQuery中clearQueue()方法用法实例
2014/12/29 Javascript
JavaScript获取DOM元素的11种方法总结
2015/04/25 Javascript
Jquery+Ajax+PHP+MySQL实现分类列表管理(上)
2015/10/28 Javascript
JavaScript编写页面半透明遮罩效果的简单示例
2016/05/09 Javascript
js事件冒泡、事件捕获和阻止默认事件详解
2016/08/04 Javascript
Vue2.0+ElementUI实现表格翻页的实例
2017/10/23 Javascript
微信小程序购物车、父子组件传值及calc的注意事项总结
2018/11/14 Javascript
深入理解Node内建模块和对象
2019/03/12 Javascript
vue中使用props传值的方法
2019/05/08 Javascript
python监控网卡流量并使用graphite绘图的示例
2014/04/27 Python
从零学Python之入门(五)缩进和选择
2014/05/27 Python
Python tkinter模块中类继承的三种方式分析
2017/08/08 Python
使用Python实现windows下的抓包与解析
2018/01/15 Python
Tensorflow实现卷积神经网络用于人脸关键点识别
2018/03/05 Python
基于sklearn实现Bagging算法(python)
2019/07/11 Python
Python3安装pip工具的详细步骤
2019/10/14 Python
python科学计算之narray对象用法
2019/11/25 Python
pytorch nn.Conv2d()中的padding以及输出大小方式
2020/01/10 Python
Django高并发负载均衡实现原理详解
2020/04/04 Python
python os.listdir()乱码解决方案
2021/01/31 Python
全球500多个机场的接送服务:Suntransfers
2019/06/03 全球购物
Viking Direct荷兰:购买办公用品
2019/06/20 全球购物
在网络中有两台主机A和B,并通过路由器和其他交换设备连接起来,已经确认物理连接正确无误,怎么来测试这两台机器是否连通?如果不通,怎么来判断故障点?怎么排
2014/01/13 面试题
公司会计主管岗位责任制
2014/03/01 职场文书
中餐厅经理岗位职责
2014/04/11 职场文书
《和田的维吾尔》教学反思
2014/04/14 职场文书
党员四风剖析材料
2014/08/27 职场文书
教师三严三实心得体会
2014/10/11 职场文书
2015年治庸问责工作总结
2015/07/27 职场文书
餐厅营销的秘密:为什么老顾客会流水?
2019/08/08 职场文书
python基于tkinter制作下班倒计时工具
2021/04/28 Python
解决Swagger2返回map复杂结构不能解析的问题
2021/07/02 Java/Android
victoriaMetrics库布隆过滤器初始化及使用详解
2022/04/05 Golang