JavaScript实现网页加载进度条代码超简单


Posted in Javascript onSeptember 21, 2015

网页进度条能够更好的反应当前网页的加载进度情况,loading进度条可用动画的形式从开始0%到100%完成网页加载这一过程。但是目前的浏览器并没有提供页面加载进度方面的接口,也就是说页面还无法准确返回页面实际加载的进度,本文中我们使用jQuery来实现页面加载进度条效果。

HTML

首先我们要知道的是,目前没有任何浏览器可以直接获取正在加载对象的大小。所以我们无法通过数据大小来实现0-100%的加载显示过程。

因此我们需要通过html代码逐行加载的特性,在整页代码的若干个跳跃行数中设置节点,进行大概的模糊进度反馈来实现进度加载的效果。大致意思是:页面每加载到指定区域,则返回(n)%的进度结果,通过设置多个节点,来达到一步一步显示加载进度的目的。

假如有一个页面,按区块分为页头、左侧内容、右边侧栏、页脚四部分,我们把这四部分作为四个节点,当页面加载每一个节点后,设置大概加载百分比,页面结构如下:

<div id="header"> 
页头部分 
</div> 
<div id="mainpage"> 
左侧内容 
</div> 
<div id="sider"> 
右边侧栏 
</div> 
<div id="footer"> 
页脚部分 
</div>

然后我们在<body>下的第一行加上进度条.loading。

<div class="loading"></div>

CSS

我们要设置loading进度条的样式,设置背景色,高度,以及位置,优先级等。

.loading{ 
 background:#FF6100; //设置进度条的颜色 
 height:5px; //设置进度条的高度 
 position:fixed; //设定进度条跟随屏幕滚动 
 top:0; //将进度条固定在页面顶部 
 z-index:99999 //提高进度条的优先层级,避免被其他层遮挡 
}

jQuery

接下来,我们要在每个节点后面加上进度动画,使用jQuery来实现。

<div id="header"> 
页头部分</div> 
<script type="text/javascript"> 
 $('.loading').animate({'width':'33%'},50); 
 //第一个进度节点 
</script> 
<div id="mainpage"> 
左侧内容 
</div> 
<script type="text/javascript"> 
 $('.loading').animate({'width':'55%'},50); 
//第二个进度节点 
</script> 
<div id="sider"> 
右边侧栏 
</div> 
<script type="text/javascript"> 
 $('.loading').animate({'width':'80%'},50); 
//第三个进度节点 
</script> 
<div id="footer"> 
页脚部分 
</div> 
<script type="text/javascript"> 
 $('.loading').animate({'width':'100%'},50); 
 //第四个进度节点 
</script>

可以看出,没加载一个节点后,jQuery调用animate()动画方法实现进度条宽度的变化,每个节点变化以50毫秒时间让进度条看起来更流畅些,最终从0%变化到100%,完成了进度条的进度动画。

当进度条达到100%后,页面加载完成,最后还有一步要做的就是隐藏进度条。

$(document).ready(function(){ 
 $('.loading').fadeOut();  
});
Javascript 相关文章推荐
js cookies实现简单统计访问次数
Nov 24 Javascript
jQuery each()方法的使用方法
Mar 18 Javascript
让页面上两个div中的滚动条(滑块)同步运动示例
Aug 07 Javascript
jQuery javascript获得网页的高度与宽度的实现代码
Apr 26 Javascript
AngularJS教程之简单应用程序示例
Aug 16 Javascript
使用ReactJS实现tab页切换、菜单栏切换、手风琴切换和进度条效果
Oct 17 Javascript
angularJs使用$watch和$filter过滤器制作搜索筛选实例
Jun 01 Javascript
javascript函数的节流[throttle]与防抖[debounce]
Nov 15 Javascript
Vue.js自定义事件的表单输入组件方法
Mar 08 Javascript
nvm、nrm、npm 安装和使用详解(小结)
Jan 17 Javascript
vue+elementui实现点击table中的单元格触发事件--弹框
Jul 18 Javascript
JS中forEach()、map()、every()、some()和filter()的用法
May 11 Javascript
Javascript验证方法大全
Sep 21 #Javascript
JavaScript验证Email(3种方法)
Sep 21 #Javascript
基于jQuery实现多层次的手风琴效果附源码
Sep 21 #Javascript
基于insertBefore制作简单的循环插空效果
Sep 21 #Javascript
JS实现适合于后台使用的动画折叠菜单效果
Sep 21 #Javascript
jQuery实现响应鼠标滚动的动感菜单效果
Sep 21 #Javascript
JS+CSS实现简单的二级下拉导航菜单效果
Sep 21 #Javascript
You might like
php查询相似度最高的字符串的方法
2015/03/12 PHP
php实现的xml操作类
2016/01/15 PHP
PHP二维数组矩形转置实例
2016/07/20 PHP
PHP去除空数组且数组键名重置的讲解
2019/02/28 PHP
jQuery中与toggleClass等价的程序段 以及未来学习的方向
2010/03/18 Javascript
jquery中交替点击事件的实现代码
2014/02/14 Javascript
js 操作符汇总
2014/11/08 Javascript
jQuery插件jquery-barcode实现条码打印的方法
2015/11/25 Javascript
Jquery组件easyUi实现选项卡切换示例
2016/08/23 Javascript
js图片轮播插件的封装
2017/07/21 Javascript
基于Vue 2.0的模块化前端 UI 组件库小结
2017/12/21 Javascript
微信小程序事件对象中e.target和e.currentTarget的区别详解
2019/05/08 Javascript
js实现微信聊天效果
2020/08/09 Javascript
[56:47]Ti4 循环赛第三日 iG vs Liquid
2014/07/12 DOTA
Django1.7+python 2.78+pycharm配置mysql数据库
2016/10/09 Python
浅谈python中的正则表达式(re模块)
2017/10/17 Python
Python脚本完成post接口测试的实例
2018/12/17 Python
python变量赋值方法(可变与不可变)
2019/01/12 Python
python for 循环获取index索引的方法
2019/02/01 Python
如何使用Python自动控制windows桌面
2019/07/11 Python
python批量图片处理简单示例
2019/08/06 Python
python自动化测试之异常及日志操作实例分析
2019/11/09 Python
解决H5的a标签的download属性下载service上的文件出现跨域问题
2019/07/16 HTML / CSS
HTML5 图片预加载的示例代码
2020/03/25 HTML / CSS
世界上最大的网络主机公司:1&1
2016/10/12 全球购物
StubHub智利:购买和出售您的门票
2016/11/23 全球购物
Skyscanner阿联酋:全球领先的旅游搜索平台
2017/11/25 全球购物
英国最大的在线照明商店:Litecraft
2020/08/31 全球购物
外语专业毕业生自我评价分享
2013/10/05 职场文书
安全事故检讨书
2014/01/18 职场文书
九年级体育教学反思
2014/01/23 职场文书
2014年健康教育实施方案
2014/02/17 职场文书
创业女性典型材料
2014/05/02 职场文书
弘扬民族精神演讲稿
2014/05/07 职场文书
2014年党支部承诺书
2014/05/30 职场文书
深入理解java.lang.String类的不可变性
2021/06/27 Java/Android