基于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的几种方法
Oct 23 Javascript
JavaScript 页面坐标相关知识整理
Jan 09 Javascript
js客户端快捷键管理类的较完整实现和应用
Jun 08 Javascript
js最简单的拖拽效果实现代码
Sep 24 Javascript
Jquery中find与each方法用法实例
Feb 04 Javascript
mvvm双向绑定机制的原理和实现代码(推荐)
Jun 07 Javascript
BootStrap使用popover插件实现鼠标经过显示并保持显示框
Jun 23 Javascript
Node.js包管理器Yarn的入门介绍与安装
Oct 17 Javascript
浅谈bootstrap使用中的一些问题以及解决过程
Oct 18 Javascript
Node.js中读取TXT文件内容fs.readFile()用法
Oct 10 Javascript
使用Vue.js 和Chart.js制作绚丽多彩的图表
Jun 15 Javascript
vue等两个接口都返回结果再执行下一步的实例
Sep 08 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
Memcached常用命令以及使用说明详解
2013/06/27 PHP
php删除指定目录的方法
2015/04/03 PHP
php使用strip_tags()去除html标签仍有空白的解决方法
2016/07/28 PHP
基于CI框架的微信网页授权库示例
2016/11/25 PHP
PHP实现对数组分页处理实例详解
2017/02/07 PHP
Laravel 自定命令以及生成文件的例子
2019/10/23 PHP
漂亮的仿flash菜单,来自蓝色经典
2006/06/26 Javascript
彪哥1.1(智能表格)提供下载
2006/09/07 Javascript
HTML页面登录时的JS验证方法
2014/05/28 Javascript
JavaScript基础教程之alert弹出提示框实例
2014/10/16 Javascript
轻松学习jQuery插件EasyUI EasyUI创建RSS Feed阅读器
2015/11/30 Javascript
BootStrap中的table实现数据填充与分页应用小结
2016/05/26 Javascript
Javascript基础_标记文字的实现方法
2016/06/14 Javascript
JavaScript原生编写《飞机大战坦克》游戏完整实例
2017/01/04 Javascript
layui从数据库中获取复选框的值并默认选中方法
2018/08/15 Javascript
JSONP原理及应用实例详解
2018/09/13 Javascript
vue解决一个方法同时发送多个请求的问题
2018/09/25 Javascript
vue-cli3 项目从搭建优化到docker部署的方法
2019/01/28 Javascript
JavaScript中工厂函数与构造函数示例详解
2019/05/06 Javascript
Vue2.0使用嵌套路由实现页面内容切换/公用一级菜单控制页面内容切换(推荐)
2019/05/08 Javascript
微信小程序实现折线图的示例代码
2019/06/07 Javascript
vue输入框使用模糊搜索功能的实现代码
2020/05/26 Javascript
vue3.0实现插件封装
2020/12/14 Vue.js
python生成指定长度的随机数密码
2014/01/23 Python
Python入门篇之字典
2014/10/17 Python
python 匹配url中是否存在IP地址的方法
2018/06/04 Python
对python中的os.getpid()和os.fork()函数详解
2019/08/08 Python
利用pytorch实现对CIFAR-10数据集的分类
2020/01/14 Python
Pyinstaller加密打包应用的示例代码
2020/06/11 Python
Python下使用Trackbar实现绘图板
2020/10/27 Python
详解vscode实现远程linux服务器上Python开发
2020/11/10 Python
松本清官方海外旗舰店:日本最大的药妆连锁店
2017/11/21 全球购物
巴西体育用品商店:Lojão dos Esportes
2018/07/21 全球购物
英国领先的在线礼品店:Getting Personal
2019/09/24 全球购物
2015年度高中教师工作总结
2015/05/26 职场文书
python实现网络五子棋
2021/04/11 Python