用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 相关文章推荐
在模板页面的js使用办法
Apr 01 Javascript
关于UTF-8的客户端用AJAX方式获取GB2312的服务器端乱码问题的解决办法
Nov 30 Javascript
JavaScript检测浏览器cookie是否已经启动的方法
Feb 27 Javascript
JS组件Bootstrap Select2使用方法详解
Apr 17 Javascript
悬浮广告方法日常收集整理
Mar 18 Javascript
JavaScript中instanceof运算符的使用示例
Jun 08 Javascript
AngularJS 表达式详细讲解及实例代码
Jul 26 Javascript
JavaScript随机生成颜色的方法
Oct 15 Javascript
jQuery通过改变input的type属性实现密码显示隐藏切换功能
Feb 08 Javascript
Echarts之悬浮框中的数据排序问题
Nov 08 Javascript
javascript实现计算指定范围内的质数示例
Dec 29 Javascript
Openlayers实现地图的基本操作
Sep 28 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安装xdebug/php安装pear/phpunit详解步骤(图)
2013/12/22 PHP
PHP正则表达式替换站点关键字链接后空白的解决方法
2014/09/16 PHP
Laravel事件监听器用法实例分析
2019/03/12 PHP
ExtJs GridPanel简单的增删改实现代码
2010/08/26 Javascript
Jquery 的扩展方法总结
2011/10/01 Javascript
brook javascript框架介绍
2011/10/10 Javascript
JS判断数组中是否有重复值得三种实用方法
2013/08/16 Javascript
javascript验证身份证完全方法具体实现
2013/11/18 Javascript
js+html5实现canvas绘制镂空字体文本的方法
2015/06/05 Javascript
Node.js刷新session过期时间的实现方法推荐
2016/05/18 Javascript
jquery实现静态搜索功能(可输入搜索文字)
2017/03/28 jQuery
基于Bootstrap分页的实例讲解(必看篇)
2017/07/04 Javascript
vue做移动端适配最佳解决方案(亲测有效)
2018/09/04 Javascript
mpvue项目中使用第三方UI组件库的方法
2018/09/30 Javascript
原生js+css实现tab切换功能
2020/09/17 Javascript
Openlayers实现图形绘制
2020/09/28 Javascript
Web服务器框架 Tornado简介
2014/07/16 Python
详解Python的Django框架中的中间件
2015/07/24 Python
Django验证码的生成与使用示例
2017/05/20 Python
python anaconda 安装 环境变量 升级 以及特殊库安装的方法
2017/06/21 Python
Python编程求解二叉树中和为某一值的路径代码示例
2018/01/04 Python
详解python3中tkinter知识点
2018/06/21 Python
Python+OpenCV目标跟踪实现基本的运动检测
2018/07/10 Python
python实现自动网页截图并裁剪图片
2018/07/30 Python
Python拼接微信好友头像大图的实现方法
2018/08/01 Python
Python&amp;&amp;GDAL实现NDVI的计算方式
2020/01/09 Python
Python操作注册表详细步骤介绍
2020/02/05 Python
Python基础类继承重写实现原理解析
2020/04/03 Python
Django ORM实现按天获取数据去重求和例子
2020/05/18 Python
浅谈Python中的字符串
2020/06/10 Python
个人思想理论学习的自我鉴定
2013/11/30 职场文书
会计师职业生涯规划范文
2014/02/18 职场文书
优秀管理者事迹材料
2014/05/22 职场文书
婚姻出轨保证书
2015/05/08 职场文书
2015年煤矿安全工作总结
2015/05/23 职场文书
2019送给家人们的中秋节祝福语
2019/08/15 职场文书