用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 相关文章推荐
JavaScript 类型的包装对象(Typed Wrappers)
Oct 27 Javascript
jQuery创建DOM元素实例解析
Jan 19 Javascript
jquery使用animate方法实现控制元素移动
Mar 27 Javascript
javascript表单处理具体实现代码(表单、链接、按钮)
May 07 Javascript
基于jQuery封装的分页组件
Jun 26 jQuery
详谈AngularJs 控制器、数据绑定、作用域
Jul 09 Javascript
详解在vue-cli中引用jQuery、bootstrap以及使用sass、less编写css
Nov 08 jQuery
iview日期控件,双向绑定日期格式的方法
Mar 15 Javascript
vue-router判断页面未登录自动跳转到登录页的方法示例
Nov 04 Javascript
使用 Vue 实现一个虚拟列表的方法
Aug 20 Javascript
webpack+vue.js构建前端工程化的详细教程
May 10 Javascript
vue实现日历表格(element-ui)
Sep 24 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
3
2006/10/09 PHP
关于ThinkPhp 框架表单验证及ajax验证问题
2017/07/19 PHP
laravel实现图片上传预览,及编辑时可更换图片,并实时变化的例子
2019/11/14 PHP
JS的数组的扩展实例代码
2008/07/09 Javascript
DOM2非标准但却支持很好的几个属性小结
2012/01/21 Javascript
jquery的ajax简单结构示例代码
2014/02/17 Javascript
js全选实现和判断是否有复选框选中的方法
2015/02/17 Javascript
jQuery树形控件zTree使用小结
2016/08/02 Javascript
学习Angular中作用域需要注意的坑
2016/08/17 Javascript
详谈javascript精度问题与调整
2017/07/08 Javascript
vue如何获取点击事件源的方法
2017/08/10 Javascript
基于jQuery实现图片推拉门动画效果的两种方法
2017/08/26 jQuery
Angular4.0中引入laydate.js日期插件的方法教程
2017/12/25 Javascript
vue裁切预览组件功能的实现步骤
2018/05/04 Javascript
Vue拖拽组件开发实例详解
2018/05/11 Javascript
koa-router源码学习小结
2018/09/07 Javascript
微信小程序module.exports模块化操作实例浅析
2018/12/20 Javascript
vscode中的vue项目报错Property ‘xxx‘ does not exist on type ‘CombinedVueInstance<{ readyOnly...Vetur(2339)
2020/09/11 Javascript
vue3.0搭配.net core实现文件上传组件
2020/10/29 Javascript
vue实现按钮切换图片
2021/01/20 Vue.js
[45:25]完美世界DOTA2联赛循环赛 PXG vs IO 第一场 11.06
2020/11/09 DOTA
Python实现豆瓣图片下载的方法
2015/05/25 Python
Python实现的井字棋(Tic Tac Toe)游戏示例
2018/01/31 Python
opencv python 2D直方图的示例代码
2018/07/20 Python
Django框架实现的分页demo示例
2019/05/25 Python
Python大数据之从网页上爬取数据的方法详解
2019/11/16 Python
python各层级目录下import方法代码实例
2020/01/20 Python
在python下实现word2vec词向量训练与加载实例
2020/06/09 Python
pycharm-professional-2020.1下载与激活的教程
2020/09/21 Python
在什么时候需要使用"常引用"
2015/12/31 面试题
党支部特色活动方案
2014/08/20 职场文书
小学生交通安全寄语
2015/02/27 职场文书
公司车辆维修管理制度
2015/08/05 职场文书
初中班长竞选稿
2015/11/20 职场文书
建立共青团委员会的请示
2019/04/02 职场文书
SpringBoot系列之MongoDB Aggregations用法详解
2022/02/12 MongoDB