用jQuery模拟页面加载进度条的实现代码


Posted in Javascript onDecember 19, 2011

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

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

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

CSS

*{margin:0;padding:0;font-size:12px} 
.loading{position:relative;top:0;left:0} 
.text input{float:left;color:#fff;height:32px;line-height:34px;padding:0 15px;background:#A70000;border:0} 
.jindu{float:left;margin-left:14px;color:#fff;width:150px;height:32px;line-height:32px;background:#000;position:relative} 
.jindu b{color:#A70000;font-size:0px;border-width:10px;border-color:transparent transparent transparent #A70000;border-style:dotted dotted dotted solid;position:absolute;left:-16px;top:5px} 
.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="text"><input type="button" value="正在初始化"></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){ 
$('.loading .jindu2').animate({width:c+'px'},500,function(){ 
$('.loading input').val(a); 
$('.loading font').text(b); 
$('.loading').animate({top:'-32px'},1000,function(){ 
alert('页面加载完毕'); 
}); 
}); 
}else{ 
$('.loading .jindu2').animate({width:c+'px'},500,function(){ 
$('.loading input').val(a); 
$('.loading 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 相关文章推荐
Javascript实例教程(19) 使用HoTMetal(5)
Dec 23 Javascript
ajax 缓存 问题 requestheader
Aug 01 Javascript
多个js与css文件的合并方法详细说明
Dec 26 Javascript
jquery实现marquee效果(文字或者图片的水平垂直滚动)
Jan 07 Javascript
THREE.JS入门教程(1)THREE.JS使用前了解
Jan 24 Javascript
jQuery中mouseover事件用法实例
Dec 26 Javascript
jquery简单实现外部链接用新窗口打开的方法
May 30 Javascript
AngularJS通过$http和服务器通信详解
Sep 21 Javascript
JS实现图片放大缩小的方法
Feb 15 Javascript
IScroll那些事_当内容不足时下拉刷新的解决方法
Jul 18 Javascript
vue通过style或者class改变样式的实例代码
Oct 30 Javascript
js实现搜索栏效果
Nov 16 Javascript
javascript管中窥豹 形参与实参浅析
Dec 17 #Javascript
jquery focus(fn),blur(fn)方法实例代码
Dec 16 #Javascript
JS获取整个页面文档的实现代码
Dec 15 #Javascript
jQuery版仿Path菜单效果
Dec 15 #Javascript
cnblogs 代码高亮显示后的代码复制问题解决实现代码
Dec 14 #Javascript
js 可拖动列表实现代码
Dec 13 #Javascript
使用Mootools动态添加Css样式表代码,兼容各浏览器
Dec 12 #Javascript
You might like
使用php4加速网络传输
2006/10/09 PHP
IIS环境下快速安装、配置和调试PHP5.2.0
2006/12/17 PHP
关于js与php互相传值的介绍
2013/06/25 PHP
PHP实现PDO的mysql数据库操作类
2014/12/12 PHP
php实现按天数、星期、月份查询的搜索框
2016/05/02 PHP
PHP正则判断一个变量是否为正整数的方法
2019/02/27 PHP
JavaScript学习笔记之DOM基础 2.4
2015/08/14 Javascript
js选项卡的制作方法
2017/01/23 Javascript
vue中v-for通过动态绑定class实现触发效果
2018/12/06 Javascript
微信小程序实现上传word、txt、Excel、PPT等文件功能
2019/05/23 Javascript
jQuery实现动态加载(按需加载)javascript文件的方法分析
2019/05/31 jQuery
JS对日期操作封装代码实例
2019/11/08 Javascript
尝试使用Python多线程抓取代理服务器IP地址的示例
2015/11/09 Python
Python使用sorted排序的方法小结
2017/07/28 Python
Python在图片中插入大量文字并且自动换行
2019/01/02 Python
Python 根据日志级别打印不同颜色的日志的方法示例
2019/08/08 Python
使用python turtle画高达
2020/01/19 Python
在tensorflow中设置使用某一块GPU、多GPU、CPU的操作
2020/02/07 Python
Python用K-means聚类算法进行客户分群的实现
2020/08/23 Python
python中_del_还原数据的方法
2020/12/09 Python
浅析border-radius如何兼容IE
2016/04/19 HTML / CSS
英国最大的宠物商店:Pets at Home
2019/04/17 全球购物
优秀党员转正的自我评价
2013/10/06 职场文书
法学专业自我鉴定
2014/02/05 职场文书
《美丽的公鸡》教学反思
2014/02/25 职场文书
幼儿园评语大全
2014/04/17 职场文书
社会发展项目建议书
2014/08/25 职场文书
争先创优演讲稿
2014/09/15 职场文书
群众路线个人剖析材料及整改措施
2014/11/04 职场文书
房地产销售助理岗位职责
2015/04/14 职场文书
《我和小伙伴》教学反思
2016/02/20 职场文书
职业生涯规划书之大学四年
2019/08/07 职场文书
Python Pycharm虚拟下百度飞浆PaddleX安装报错问题及处理方法(亲测100%有效)
2021/05/24 Python
nginx配置文件使用环境变量的操作方法
2021/06/02 Servers
python中使用redis用法详解
2022/12/24 Redis