基于jQuery实现模拟页面加载进度条


Posted in Javascript onApril 01, 2013

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

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

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

.loading{position:relative;top:0;left:0} 
.tip1{float:left;background:#A70000;color:#fff;height:32px;line-height:32px;padding:0 15px;border:0;position:relative} 
.jindu{float:left;margin-left:20px;color:#fff;width:150px;height:32px;line-height:32px;background:#000;position:relative} 
.jindu b{color:#A70000;width:0;height:0;font-size:0px;border-width:10px;border-color:#fff #fff #fff #A70000;border-style:solid;position:absolute;left:-20px;top:5px;overflow:hidden} 
.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="tip1">系统初始化中</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){ 
$('.bgloader .jindu2').animate({width:c+'px'},500,function(){ 
$('.bgloader .tip1').text(a); 
$('.bgloader font').text(b); 
$('.bgloader .loading').animate({top:'-32px'},1000,function(){ 
$('.bgloader').fadeOut(); 
}); 
}); 
}else{ 
$('.bgloader .jindu2').animate({width:c+'px'},500,function(){ 
$('.bgloader .tip1').text(a); 
$('.bgloader 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 相关文章推荐
用 JSON 处理缓存
Apr 27 Javascript
asp.net HttpHandler实现图片防盗链
Nov 09 Javascript
jQuery实现随意改变div任意属性的名称和值(部分原生js实现)
May 28 Javascript
用js控制组织结构图可以任意拖拽到指定位置
Jan 17 Javascript
Node.js connect ECONNREFUSED错误解决办法
Sep 15 Javascript
JS实现的随机排序功能算法示例
Jun 09 Javascript
require.js中的define函数详解
Jul 10 Javascript
详解基于webpack2.x的vue2.x的多页面站点
Aug 21 Javascript
zTree节点文字过多的处理方法
Nov 24 Javascript
js嵌套的数组扁平化:将多维数组变成一维数组以及push()与concat()区别的讲解
Jan 19 Javascript
浅谈JavaScript中你可能不知道URL构造函数的属性
Jul 13 Javascript
node.js通过url读取文件
Oct 16 Javascript
javascript ie6兼容position:fixed实现思路
Apr 01 #Javascript
JavaScript中的onerror事件概述及使用
Apr 01 #Javascript
js捕获鼠标右键菜单中的粘帖事件实现代码
Apr 01 #Javascript
向当前style sheet中插入一个新的style实现方法
Apr 01 #Javascript
select标签模拟/美化方法采用JS外挂式插件
Apr 01 #Javascript
html组件不可输入(只读)同时任何组件都有效
Apr 01 #Javascript
jQuery 网易相册鼠标移动显示隐藏效果实现代码
Mar 31 #Javascript
You might like
PHP 裁剪图片成固定大小代码方法
2009/09/09 PHP
php 上传功能实例代码
2010/04/13 PHP
php mysql操作mysql_connect连接数据库实例详解
2016/12/26 PHP
用PHP的反射实现委托模式的讲解
2019/03/22 PHP
JS中的form.submit()不能提交表单的错误原因
2014/10/08 Javascript
在AngularJS中使用AJAX的方法
2015/06/17 Javascript
基于JavaScript怎么实现让歌词滚动播放
2015/11/03 Javascript
JS判断字符串字节数并截取长度的方法
2016/03/05 Javascript
基于jQuery实现顶部导航栏功能
2016/12/27 Javascript
js移动端事件基础及常用事件库详解
2017/08/15 Javascript
angular4 JavaScript内存溢出问题
2018/03/06 Javascript
打通前后端构建一个Vue+Express的开发环境
2018/07/17 Javascript
微信小程序按钮去除边框线分享页面功能
2018/08/27 Javascript
js中arguments对象的深入理解
2019/05/14 Javascript
vue实现带复选框的树形菜单
2019/05/27 Javascript
Vue实现移动端拖拽交换位置
2020/07/29 Javascript
js canvas实现五子棋小游戏
2021/01/22 Javascript
Python编程中的文件操作攻略
2015/10/16 Python
Python使用当前时间、随机数产生一个唯一数字的方法
2017/09/18 Python
Python连接Mssql基础教程之Python库pymssql
2018/09/16 Python
python高斯分布概率密度函数的使用详解
2019/07/10 Python
深入解析神经网络从原理到实现
2019/07/26 Python
Python requests获取网页常用方法解析
2020/02/20 Python
python pillow库的基础使用教程
2021/01/13 Python
分享一个页面平滑滚动小技巧(推荐)
2019/10/23 HTML / CSS
深入解析HTML5中的Blob对象的使用
2015/09/08 HTML / CSS
英国鞋类及配饰零售商:Kurt Geiger
2017/02/04 全球购物
会计学应届毕业生推荐信
2013/11/04 职场文书
竞选班长自荐书范文
2014/03/09 职场文书
班级体育活动总结
2014/07/05 职场文书
四风问题原因分析及整改措施
2014/10/24 职场文书
2014年学校工作总结
2014/11/20 职场文书
公司宣传语大全
2015/07/13 职场文书
Win11任务栏太宽了怎么办?一招解决Win11任务栏太宽问题
2021/11/21 数码科技
动视暴雪取消疫苗禁令 让所有员工返回线下工作
2022/04/03 其他游戏
vue/cli 配置动态代理无需重启服务的方法
2022/05/20 Vue.js