基于jQuery实现模拟页面加载进度条


Posted in Javascript onApril 01, 2013

因为我们无法通过任何方法获取整个页面的大小和当前加载了多少,所以想制作一个加载进度条的唯一办法就是模拟。那要怎么模拟呢?
基于jQuery实现模拟页面加载进度条

我们知道,页面是从上往下执行的,也就是说我们可以大致估算出在页面的某个位置加载了多少,而后用jq模拟出一个进度条来显示。

首先我们先画一个进度条的样子,也就是上图图中的样子,这个不用过多说明,自己看代码
CSS

.loading{position:relative;top:0;left:0} 
.tip1{float:left;background:#A70000;color:#fff;height:32px;line-height:32px;padding:0 15px;border:0;position:relative} 
.jindu{float:left;margin-left:20px;color:#fff;width:150px;height:32px;line-height:32px;background:#000;position:relative} 
.jindu b{color:#A70000;width:0;height:0;font-size:0px;border-width:10px;border-color:#fff #fff #fff #A70000;border-style:solid;position:absolute;left:-20px;top:5px;overflow:hidden} 
.jindu .jindu2{width:0px;height:32px;line-height:32px;background:#A70000;position:absolute} 
.jindu .text{width:150px;height:32px;line-height:32px;text-align:center;position:absolute} 
 

HTML
<div class="loading"> 
<div class="tip1">系统初始化中</div> 
<div class="jindu"> 
<b></b> 
<div class="jindu2"></div> 
<div class="text">页面总进度 <font>0</font>%</div> 
</div> 
</div>

这时候注意了,我们要引用jquery库,引用的位置不是在head区域,而是紧接着html代码下面写。为什么要这样,因为样式我们放head里的原因是保证页面加载第一步就把样式加载好,这样页面不会乱。而JS则不需要,再加上页面上大的文件主要也就是js,所以放在body里加载js是为了进度条考虑。
进度条画好了,jquery引用了,我们现在要写个方法,也就是可以让进度条动起来
var loading = function(a,b){ 
var c = b*1.5; 
if(b==100){ 
$('.bgloader .jindu2').animate({width:c+'px'},500,function(){ 
$('.bgloader .tip1').text(a); 
$('.bgloader font').text(b); 
$('.bgloader .loading').animate({top:'-32px'},1000,function(){ 
$('.bgloader').fadeOut(); 
}); 
}); 
}else{ 
$('.bgloader .jindu2').animate({width:c+'px'},500,function(){ 
$('.bgloader .tip1').text(a); 
$('.bgloader font').text(b); 
}); 
} 
};

这里我写了个loading(a,b),两个参数分别是显示加载内容提示信息和加载进度百分比,然后,我用了其他几个js库做加载进度测试
<script type="text/javascript">loading('正在加载jQuery UI',30);</script> 
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.16/jquery-ui.min.js"></script> 
<script type="text/javascript">loading('正在加载Chrome Frame',50);</script> 
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/chrome-frame/1.0.2/CFInstall.min.js"></script> 
<script type="text/javascript">loading('正在加载EXTJS',70);</script> 
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/ext-core/3.1.0/ext-core.js"></script> 
<script type="text/javascript">loading('正在加载mootools',90);</script> 
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/mootools/1.4.1/mootools-yui-compressed.js"></script> 
<script type="text/javascript">loading('正在加载dojo',100);</script> 
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/dojo/1.6.1/dojo/dojo.xd.js"></script>

demo下载地址:点击下载
Javascript 相关文章推荐
xmlHTTP实例
Oct 24 Javascript
初窥JQuery(二)事件机制(2)
Dec 06 Javascript
jQuery事件 delegate()使用方法介绍
Oct 30 Javascript
js获取系统的根路径实现介绍
Sep 08 Javascript
浅谈javascript中for in 和 for each in的区别
Apr 23 Javascript
浅谈js 闭包引起的内存泄露问题
Jun 22 Javascript
select隐藏选中值对应的id,显示其它id的简单实现方法
Aug 25 Javascript
Angular2入门教程之模块和组件详解
May 28 Javascript
详解vue渲染函数render的使用
Dec 12 Javascript
Vue组件库发布到npm详解
Feb 17 Javascript
详解vue2.0+vue-video-player实现hls播放全过程
Mar 02 Javascript
vue props 一次传多个值实例
Jul 22 Javascript
javascript ie6兼容position:fixed实现思路
Apr 01 #Javascript
JavaScript中的onerror事件概述及使用
Apr 01 #Javascript
js捕获鼠标右键菜单中的粘帖事件实现代码
Apr 01 #Javascript
向当前style sheet中插入一个新的style实现方法
Apr 01 #Javascript
select标签模拟/美化方法采用JS外挂式插件
Apr 01 #Javascript
html组件不可输入(只读)同时任何组件都有效
Apr 01 #Javascript
jQuery 网易相册鼠标移动显示隐藏效果实现代码
Mar 31 #Javascript
You might like
PHP实现删除非站内外部链接实例代码
2014/06/17 PHP
php+jquery+html实现点击不刷新加载更多的实例代码
2016/08/12 PHP
thinkPHP简单实现多个子查询语句的方法
2016/12/05 PHP
JavaScript 学习笔记(七)字符串的连接
2009/12/31 Javascript
FileUpload 控件 禁止手动输入或粘贴的实现代码
2010/04/07 Javascript
xml转json的js代码
2012/08/28 Javascript
jquery自定义类似$.ajax()的方法实现代码
2013/08/13 Javascript
JavaScript 垃圾回收机制分析
2013/10/10 Javascript
Jquery 动态循环输出表格具体方法
2013/11/23 Javascript
jQuery常用操作方法及常用函数总结
2014/06/19 Javascript
Nodejs中的this详解
2016/03/26 NodeJs
Vue2实现组件props双向绑定
2016/12/02 Javascript
nodeJs链接Mysql做增删改查的简单操作
2017/02/04 NodeJs
webpack file-loader和url-loader的区别
2019/01/15 Javascript
vue-cli3 从搭建到优化的详细步骤
2019/01/20 Javascript
jQuery实现合并表格单元格中相同行操作示例
2019/01/28 jQuery
jquery操作checkbox的常用方法总结【附测试源码下载】
2019/06/10 jQuery
微信小程序绘制图片发送朋友圈
2019/07/25 Javascript
js 函数性能比较方法
2020/08/24 Javascript
python使用matplotlib绘制折线图教程
2017/02/08 Python
python多线程socket编程之多客户端接入
2017/09/12 Python
Python实现动态图解析、合成与倒放
2018/01/18 Python
Python基于win32ui模块创建弹出式菜单示例
2018/05/09 Python
Python语言检测模块langid和langdetect的使用实例
2019/02/19 Python
tensorflow入门:TFRecordDataset变长数据的batch读取详解
2020/01/20 Python
中国第一家杂志折扣订阅网:杂志铺
2016/08/30 全球购物
匡威德国官网:Converse德国
2019/01/26 全球购物
会计辞职信范文
2014/01/15 职场文书
飘柔洗发水广告词
2014/03/14 职场文书
保护环境建议书400字
2014/05/13 职场文书
火锅店的活动方案
2014/08/15 职场文书
个人对照检查材料思想汇报(四风问题)
2014/09/25 职场文书
高中家长意见怎么写
2015/06/03 职场文书
2015年统计员个人工作总结
2015/07/23 职场文书
聘任书的格式及模板
2019/10/28 职场文书
MySQL索引 高效获取数据的数据结构
2022/05/02 MySQL