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 !!的作用
Dec 04 Javascript
JavaScript flash复制库类 Zero Clipboard
Jan 17 Javascript
Lazy Load 延迟加载图片的jQuery插件中文使用文档
Oct 18 Javascript
jquery表格内容筛选实现思路及代码
Apr 16 Javascript
JSON 数字排序多字段排序介绍
Sep 18 Javascript
动态加载JS文件的三种方法
Nov 08 Javascript
纯js模拟div层弹性运动的方法
Jul 27 Javascript
vue.js通过自定义指令实现数据拉取更新的实现方法
Oct 18 Javascript
基于JavaScript实现选项卡效果
Jul 21 Javascript
JS实现中英文混合文字溢出友好截取功能
Aug 06 Javascript
vue动态子组件的两种实现方式
Sep 01 Javascript
jQuery实现的移动端图片缩放功能组件示例
May 01 jQuery
分享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 url路由入门实例
2014/04/23 PHP
php使用PDO下exec()函数查询执行后受影响行数的方法
2017/03/28 PHP
javascript 学习笔记(一)DOM基本操作
2011/04/08 Javascript
JavaScript三元运算符的多种使用技巧
2015/04/16 Javascript
jQuery实现Email邮箱地址自动补全功能代码
2015/11/03 Javascript
Javascript实现Array和String互转换的方法
2015/12/21 Javascript
JavaScript学习笔记之创建对象
2016/03/25 Javascript
Js+Ajax,Get和Post在使用上的区别小结
2016/06/08 Javascript
Bootstrap Table使用整理(二)
2017/06/09 Javascript
iscroll-probe实现下拉刷新和下拉加载效果
2017/06/28 Javascript
使用JavaScript实现链表的数据结构的代码
2017/08/02 Javascript
vue按需加载组件webpack require.ensure的方法
2017/12/13 Javascript
vue-cli构建项目下使用微信分享功能
2018/05/28 Javascript
Vue.use源码学习小结
2018/06/20 Javascript
vue与原生app的对接交互的方法(混合开发)
2018/11/28 Javascript
微信小程序文字显示换行问题
2019/07/28 Javascript
vue项目打包之开发环境和部署环境的实现
2020/04/23 Javascript
python 实现堆排序算法代码
2012/06/05 Python
python 寻找离散序列极值点的方法
2019/07/10 Python
python 在右键菜单中加入复制目标文件的有效存放路径(单斜杠或者双反斜杠)
2020/04/08 Python
keras绘制acc和loss曲线图实例
2020/06/15 Python
简单了解Python字典copy与赋值的区别
2020/09/16 Python
Python常用GUI框架原理解析汇总
2020/12/07 Python
纯CSS3实现手风琴风格菜单具体步骤
2013/05/06 HTML / CSS
教你使用Canvas处理图片的方法
2017/11/28 HTML / CSS
索引覆盖(Index Covering)查询含义
2012/02/18 面试题
2015年行政工作总结范文
2015/04/09 职场文书
催款函怎么写
2015/06/24 职场文书
保护地球的宣传语
2015/07/13 职场文书
导游词之江苏同里古镇
2019/11/18 职场文书
《卧薪尝胆》读后感3篇
2019/12/26 职场文书
pytorch显存一直变大的解决方案
2021/04/08 Python
解决numpy和torch数据类型转化的问题
2021/05/23 Python
Unity连接MySQL并读取表格数据的实现代码
2021/06/20 MySQL
Python 中 Shutil 模块详情
2021/11/11 Python