基于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 相关文章推荐
JavaScript 高级语法介绍
Jun 15 Javascript
gridview生成时如何去掉style属性中的border-collapse
Sep 30 Javascript
JavaScript使用DeviceOne开发实战(四)仿优酷视频应用
Dec 02 Javascript
基于AngularJS+HTML+Groovy实现登录功能
Feb 17 Javascript
Node.js配合node-http-proxy解决本地开发ajax跨域问题
Aug 31 Javascript
JS自定义函数对web前端上传的文件进行类型大小判断
Oct 19 Javascript
jQuery插件jqGrid动态获取列和列字段的方法
Mar 03 Javascript
Node.js Express安装与使用教程
May 11 Javascript
angular 实现的输入框数字千分位及保留几位小数点功能示例
Jun 19 Javascript
解决vue中修改了数据但视图无法更新的情况
Aug 27 Javascript
layui表单验证select下拉框实现验证的方法
Sep 05 Javascript
vue.js 实现a标签href里添加参数
Nov 12 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中目录,文件操作详谈
2007/03/19 PHP
解析:通过php socket并借助telnet实现简单的聊天程序
2013/06/18 PHP
神盾加密解密教程(一)PHP变量可用字符
2014/05/28 PHP
thinkphp中session和cookie无效的解决方法
2014/12/19 PHP
php提交表单发送邮件的方法
2015/03/20 PHP
php自动载入类用法实例分析
2016/06/24 PHP
Yii框架日志记录Logging操作示例
2018/07/12 PHP
解决laravel groupBy 对查询结果进行分组出现的问题
2019/10/09 PHP
基于jQuery的动态增删改查表格信息,可左键/右键提示(原创自Zjmainstay)
2012/07/31 Javascript
教你如何自定义百度分享插件以及bshare分享插件的分享按钮
2014/06/20 Javascript
jquery取消事件冒泡的三种方法(推荐)
2016/05/28 Javascript
js实现右键菜单功能
2016/11/28 Javascript
JS实现的简单轮播图运动效果示例
2016/12/22 Javascript
详解vue父子模版嵌套案例
2017/03/04 Javascript
angularjs的select使用及默认选中设置
2017/04/08 Javascript
JS中获取 DOM 元素的绝对位置实例详解
2018/04/23 Javascript
vue初始化动画加载的实例
2018/09/01 Javascript
Vue.js组件高级特性实例详解
2018/12/24 Javascript
vue项目中在外部js文件中直接调用vue实例的方法比如说this
2019/04/28 Javascript
解决一个微信号同时支持多个环境网页授权问题
2019/08/07 Javascript
vue移动端下拉刷新和上滑加载
2020/10/27 Javascript
详谈Python2.6和Python3.0中对除法操作的异同
2017/04/28 Python
Python+树莓派+YOLO打造一款人工智能照相机
2018/01/02 Python
Python实现合并同一个文件夹下所有txt文件的方法示例
2018/04/26 Python
Python不同目录间进行模块调用的实现方法
2019/01/29 Python
python 五子棋如何获得鼠标点击坐标
2019/11/04 Python
tensorflow 保存模型和取出中间权重例子
2020/01/24 Python
美国奢侈品在线团购网站:Gilt City
2017/11/16 全球购物
雷朋巴西官方商店:Ray-Ban Brasil
2020/07/21 全球购物
国际贸易专业个人鉴定
2014/02/22 职场文书
个人查摆问题整改措施
2014/10/04 职场文书
售房协议书范本2014
2014/10/23 职场文书
写给女朋友的检讨书
2015/05/06 职场文书
行政答辩状范文
2015/05/21 职场文书
python process模块的使用简介
2021/05/14 Python
MySQL深度分页(千万级数据量如何快速分页)
2021/07/25 MySQL