用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小实验之函数引用
Nov 17 Javascript
超酷的网页音乐播放器DewPlayer使用方法
Dec 18 Javascript
16个最流行的JavaScript框架[推荐]
May 29 Javascript
原生javascript实现DIV拖拽并计算重复面积
Jan 02 Javascript
.NET微信公众号开发之创建自定义菜单
Jul 16 Javascript
jQuery实现动态生成表格并为行绑定单击变色动作的方法
Apr 17 jQuery
JQuery判断正整数整理小结
Aug 21 jQuery
浅谈vue项目优化之页面的按需加载(vue+webpack)
Dec 11 Javascript
JavaScript实现小球沿正弦曲线运动
Sep 07 Javascript
微信小程序时间标签和时间范围的联动效果
Feb 15 Javascript
JS/jQuery实现获取时间的方法及常用类完整示例
Mar 07 jQuery
vue模块移动组件的实现示例
May 20 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
php实现下载限制速度示例分享
2014/02/13 PHP
php rsa加密解密使用详解
2015/01/14 PHP
php自动加载方式集合
2016/04/04 PHP
兼容IE/Firefox/Opera/Safari的检测页面装载完毕的脚本Ext.onReady的实现
2009/07/14 Javascript
jQuery EasyUI API 中文文档 - PropertyGrid属性表格
2011/11/18 Javascript
JS随即打乱数组实现代码
2012/12/03 Javascript
一个简单的弹性返回顶部JS代码实现介绍
2013/06/09 Javascript
javascript ready和load事件的区别示例介绍
2013/08/30 Javascript
webapp框架AngularUI的demo改造之路
2014/12/21 Javascript
适用于手机端的jQuery图片滑块动画
2016/12/09 Javascript
HTML5canvas 绘制一个圆环形的进度表示实例
2016/12/16 Javascript
Node.js连接mongodb实例代码
2017/06/06 Javascript
微信小程序 scroll-view实现锚点滑动的示例
2017/12/06 Javascript
在Python的Flask框架下收发电子邮件的教程
2015/04/21 Python
Python实现对PPT文件进行截图操作的方法
2015/04/28 Python
2018年Python值得关注的开源库、工具和开发者(总结篇)
2018/01/04 Python
Python拼接微信好友头像大图的实现方法
2018/08/01 Python
pyQT5 实现窗体之间传值的示例
2019/06/20 Python
Django 创建后台,配置sqlite3教程
2019/11/18 Python
python3 使用Opencv打开USB摄像头,配置1080P分辨率的操作
2019/12/11 Python
Python os模块常用方法和属性总结
2020/02/20 Python
解决Python paramiko 模块远程执行ssh 命令 nohup 不生效的问题
2020/07/14 Python
Python pip 常用命令汇总
2020/10/19 Python
澳大利亚著名的纺织品品牌:Canningvale
2020/05/05 全球购物
办公室内勤岗位职责范本
2013/12/09 职场文书
大学生职业生涯规划范文
2014/01/08 职场文书
2014自主招生自荐信策略
2014/01/27 职场文书
物流专业专科生职业生涯规划书
2014/09/14 职场文书
2014年小学班主任工作总结
2014/11/08 职场文书
结婚保证书
2015/01/16 职场文书
工作表扬信范文
2015/01/17 职场文书
2015年打非治违工作总结
2015/04/02 职场文书
毕业论文答辩开场白和答辩技巧
2015/05/27 职场文书
2015年“我们的节日·中秋节”活动总结
2015/07/30 职场文书
2015年终个人政治思想工作总结
2015/11/24 职场文书
Django项目如何正确配置日志(logging)
2021/04/29 Python