基于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 相关文章推荐
js实现文本框中焦点在最后位置
Mar 04 Javascript
JavaScript电子时钟倒计时
Jan 09 Javascript
如何利用JS通过身份证号获取当事人的生日、年龄、性别
Jan 22 Javascript
jQuery Easyui 下拉树组件combotree
Dec 16 Javascript
js删除数组中的元素delete和splice的区别详解
Feb 03 Javascript
解决vue2.0动态绑定图片src属性值初始化时报错的问题
Mar 14 Javascript
jQuery实现的页面详情展开收起功能示例
Jun 11 jQuery
详解Vue的钩子函数(路由导航守卫、keep-alive、生命周期钩子)
Jul 24 Javascript
JavaScript设计模式之观察者模式(发布订阅模式)原理与实现方法示例
Jul 27 Javascript
JS实现集合的交集、补集、差集、去重运算示例【ES5与ES6写法】
Feb 18 Javascript
vue实现倒计时获取验证码效果
Apr 17 Javascript
微信小程序自定义模态弹窗组件详解
Dec 24 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/04/09 PHP
深入了解 register_globals (附register_globals=off 网站打不开的解决方法)
2012/06/27 PHP
PHP日期函数date格式化UNIX时间的方法
2015/03/19 PHP
Laravel网站打开速度优化的方法汇总
2017/07/16 PHP
php获取手机端的号码以及ip地址实例代码
2018/09/12 PHP
PHP中的Iterator迭代对象属性详解
2019/04/12 PHP
用js模拟JQuery的show与hide动画函数代码
2010/09/20 Javascript
浏览器常用高宽的jquery插件
2011/02/24 Javascript
Js中的onblur和onfocus事件应用介绍
2013/08/27 Javascript
jQuery实现简单的DIV拖动效果
2016/02/19 Javascript
AngularJS中的$watch(),$digest()和$apply()区分
2016/04/04 Javascript
Javascript简写条件语句(推荐)
2016/06/12 Javascript
AngularJS 基础ng-class-even指令用法
2016/08/01 Javascript
jQuery基于排序功能实现上移、下移的方法
2016/11/26 Javascript
js实现键盘自动打字效果
2016/12/23 Javascript
Vue2.0组件间数据传递示例
2017/03/07 Javascript
node操作mysql数据库实例详解
2017/03/17 Javascript
jQuery实现select下拉框获取当前选中文本、值、索引
2017/05/08 jQuery
解决VUE框架 导致绑定事件的阻止冒泡失效问题
2018/02/24 Javascript
vue文件树组件使用详解
2018/03/29 Javascript
layui.tree组件的使用以及搜索节点功能的实现
2019/09/26 Javascript
基于Element的组件改造的树形选择器(树形下拉框)
2020/02/27 Javascript
angula中使用iframe点击后不执行变更检测的问题
2020/05/10 Javascript
Python中使用gzip模块压缩文件的简单教程
2015/04/08 Python
在Django的视图(View)外使用Session的方法
2015/07/23 Python
python爬取哈尔滨天气信息
2018/07/14 Python
python基于C/S模式实现聊天室功能
2019/01/09 Python
python实现浪漫的烟花秀
2019/01/30 Python
复古服装:RetroStage
2019/05/10 全球购物
Noon埃及:埃及在线购物
2019/11/26 全球购物
雏鹰争章活动总结
2014/05/09 职场文书
会计演讲稿范文
2014/05/23 职场文书
机关驾驶员违规检讨书
2014/09/13 职场文书
保密法制宣传月活动总结
2015/05/07 职场文书
导游词之台湾安平古堡
2019/12/25 职场文书
nginx如何将http访问的网站改成https访问
2021/03/31 Servers