用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获取网页中的js、css、Flash等文件
Dec 20 Javascript
基于jquery的拖动布局插件
Nov 25 Javascript
JS简单实现文件上传实例代码(无需插件)
Nov 15 Javascript
jquery对单选框,多选框,文本框等常见操作小结
Jan 08 Javascript
深入理解JavaScript系列(28):设计模式之工厂模式详解
Mar 03 Javascript
使用window.prompt()实现弹出用户输入的对话框
Apr 13 Javascript
jquery属性,遍历,HTML操作方法详解
Sep 17 Javascript
jQuery获取table表中的td标签(实例讲解)
Jul 28 jQuery
提高Node.js性能的应用技巧分享
Aug 10 Javascript
深入浅出es6模板字符串
Aug 26 Javascript
js实现简单模态框实例
Nov 16 Javascript
Vue渲染过程浅析
Mar 14 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/06/30 PHP
PHP ajax 异步执行不等待执行结果的处理方法
2015/05/27 PHP
php判断用户是否关注微信公众号
2016/07/22 PHP
php指定长度分割字符串str_split函数用法示例
2017/01/30 PHP
JavaScript 常见对象类创建代码与优缺点分析
2009/12/07 Javascript
javascript正则表达式中参数g(全局)的作用
2010/11/11 Javascript
JavaScript高级程序设计(第3版)学习笔记8 js函数(中)
2012/10/11 Javascript
JavaScript DOM 编程艺术(第2版)读书笔记(JavaScript的最佳实践)
2013/10/01 Javascript
jquery validate在ie8下的bug解决方法
2013/11/13 Javascript
javascript与有限状态机详解
2014/05/08 Javascript
原生Javascript封装的一个AJAX函数分享
2014/10/11 Javascript
javascript中eval函数用法分析
2015/04/25 Javascript
原生JavaScript实现Ajax的方法
2016/04/07 Javascript
浅谈JSON.stringify()和JOSN.parse()方法的不同
2016/08/29 Javascript
微信小程序 数据访问实例详解
2016/10/08 Javascript
微信小程序(六):列表上拉加载下拉刷新示例
2017/01/13 Javascript
使用jQuery,Angular实现登录界面验证码详解
2017/04/27 jQuery
Three.js基础学习之场景对象
2017/09/27 Javascript
EasyUI的DataGrid绑定Json数据源的示例代码
2017/12/16 Javascript
JavaScript实现微信号随机切换代码
2018/03/09 Javascript
微信小程序用户信息encryptedData详解
2018/08/24 Javascript
为什么推荐使用JSX开发Vue3
2020/12/28 Vue.js
python程序控制NAO机器人行走
2019/04/29 Python
python代码实现TSNE降维数据可视化教程
2020/02/28 Python
通过实例解析Python return运行原理
2020/03/04 Python
python sleep和wait对比总结
2021/02/03 Python
纯CSS3实现图片无间断轮播效果
2016/08/25 HTML / CSS
html5实现滑块功能之type=&quot;range&quot;属性
2020/02/18 HTML / CSS
美国市场上最实惠的送餐服务:Dinnerly
2018/03/18 全球购物
生物化工专业个人自荐信
2013/09/26 职场文书
大学生实习鉴定评语
2014/04/25 职场文书
2014年度党员自我评议
2014/09/13 职场文书
车位出租协议书范本
2016/03/19 职场文书
flex弹性布局详解
2022/03/20 HTML / CSS
Python&Matlab实现樱花的绘制
2022/04/07 Python
Android 中的类文件和类加载器详情
2022/06/05 Java/Android