用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 相关文章推荐
Jquery仿淘宝京东多条件筛选可自行结合ajax加载示例
Aug 28 Javascript
深入理解JavaScript是如何实现继承的
Dec 12 Javascript
javascript父、子页面交互技巧总结
Aug 08 Javascript
jQuery中map()方法用法实例
Jan 06 Javascript
Js 获取、判断浏览器版本信息的简单方法
Aug 08 Javascript
angular 用拦截器统一处理http请求和响应的方法
Jun 08 Javascript
VueJs组件之父子通讯的方式
May 06 Javascript
微信小程序如何获取手机验证码
Nov 04 Javascript
深入浅析Vue中mixin和extend的区别和使用场景
Aug 01 Javascript
JavaScript实现省份城市的三级联动
Feb 11 Javascript
Vue中添加滚动事件设置的方法详解
Sep 14 Javascript
详解TypeScript的基础类型
Feb 18 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
twig模板获取全局变量的方法
2016/02/05 PHP
JavaScript 对象的属性和方法4种不同的类型
2010/03/19 Javascript
20个最新的jQuery插件
2012/01/13 Javascript
通过action传过来的值在option获取进行验证的方法
2013/11/14 Javascript
13个PHP函数超实用
2015/10/21 Javascript
详解javascript传统方法实现异步校验
2016/01/22 Javascript
javascript实现平滑无缝滚动
2020/08/09 Javascript
javascript实现延时显示提示框效果
2017/06/01 Javascript
Vue2 轮播图slide组件实例代码
2018/05/31 Javascript
vue中的watch监听数据变化及watch中各属性的详解
2018/09/11 Javascript
Vue.js下拉菜单组件使用方法详解
2019/10/19 Javascript
js与jquery获取input输入框中的值实例讲解
2020/02/27 jQuery
JavaScript多种图形实现代码实例
2020/06/28 Javascript
在vs code 中如何创建一个自己的 Vue 模板代码
2020/11/10 Javascript
vue keep-alive的简单总结
2021/01/25 Vue.js
[52:15]2014 DOTA2国际邀请赛中国区预选赛5.21 HGT VS LGD-GAMING
2014/05/23 DOTA
django 常用orm操作详解
2017/09/13 Python
谈谈python中GUI的选择
2018/03/01 Python
Sanic框架配置操作分析
2018/07/17 Python
tensorflow 用矩阵运算替换for循环 用tf.tile而不写for的方法
2018/07/27 Python
django多文件上传,form提交,多对多外键保存的实例
2019/08/06 Python
Python 线性回归分析以及评价指标详解
2020/04/02 Python
python多线程爬取西刺代理的示例代码
2021/01/30 Python
速比涛英国官网:Speedo英国
2019/07/15 全球购物
Hello Molly美国:女性时尚在线
2019/08/26 全球购物
软件设计的目标是什么
2016/12/04 面试题
经典优秀个人求职自荐信格式
2013/09/25 职场文书
大专生自我鉴定范文
2013/10/01 职场文书
国际商务系学生个人的自我评价
2013/11/26 职场文书
计算机软件个人的自荐信范文
2013/12/01 职场文书
个人贷款承诺书
2014/03/28 职场文书
会计专业自荐书
2014/07/08 职场文书
三好学生评语大全
2014/12/29 职场文书
同意离婚答辩状
2015/05/22 职场文书
导游词之介休绵山
2019/12/31 职场文书
Nginx Rewrite使用场景及配置方法解析
2021/04/01 Servers