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 相关文章推荐
双击滚屏-常用推荐
Nov 29 Javascript
JS匀速运动演示示例代码
Nov 26 Javascript
JavaScript获取客户端计算机硬件及系统等信息的方法
Jan 02 Javascript
JavaScript多线程详解
Aug 12 Javascript
基于JavaScript实现TAB标签效果
Jan 12 Javascript
探寻JavaScript中this指针指向
Apr 23 Javascript
Highcharts入门之基本属性
Aug 02 Javascript
JS获得一个对象的所有属性和方法实例
Feb 21 Javascript
Vue.Draggable实现拖拽效果
Jul 29 Javascript
微信小程序实现星级评分和展示
Jul 05 Javascript
浅谈JS和jQuery的区别
Mar 27 jQuery
在VUE中实现文件下载并判断状态的方法
Nov 08 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+mysql 实现身份验证代码
2010/03/24 PHP
php中转义mysql语句的实现代码
2011/06/24 PHP
PHP连接和操作MySQL数据库基础教程
2014/09/29 PHP
PHP实现统计在线人数功能示例
2016/10/15 PHP
js传值 判断
2006/10/26 Javascript
另类调用flash无须激活的方法
2006/12/27 Javascript
Javascript/Jquery——简单定时器的多种实现方法
2013/07/03 Javascript
一个简单的jquery的多选下拉框(自写)
2014/05/05 Javascript
jQuery实现自动滚动到页面顶端的方法
2015/05/22 Javascript
jqGrid表格应用之新增与删除数据附源码下载
2015/12/02 Javascript
原生javascript实现addClass,removeClass,hasClass函数
2016/02/25 Javascript
jquery取消事件冒泡的三种方法(推荐)
2016/05/28 Javascript
使用HTML5+Boostrap打造简单的音乐播放器
2016/08/05 Javascript
AngularJS过滤器filter用法总结
2016/12/13 Javascript
jQuery is not defined 错误原因与解决方法小结
2017/03/19 Javascript
js实现颜色阶梯渐变效果(Gradient算法)
2017/03/21 Javascript
jQuery EasyUI之验证框validatebox实例详解
2017/04/10 jQuery
详解React中setState回调函数
2018/06/14 Javascript
纯JS实现的读取excel文件内容功能示例【支持所有浏览器】
2018/06/23 Javascript
基于VUE实现的九宫格抽奖功能
2018/09/30 Javascript
React中Ref 的使用方法详解
2020/04/28 Javascript
JS页面动态绘图工具SVG,Canvas,VML介简介
2020/10/16 Javascript
解决vue watch数据的方法被调用了两次的问题
2020/11/07 Javascript
Vue 事件的$event参数=事件的值案例
2021/01/29 Vue.js
[57:59]完美世界DOTA2联赛循环赛 Ink Ice vs LBZS BO2第一场 11.05
2020/11/05 DOTA
在Django的通用视图中处理Context的方法
2015/07/21 Python
python使用socket创建tcp服务器和客户端
2018/04/12 Python
python爬取基于m3u8协议的ts文件并合并
2019/04/26 Python
python搜索包的路径的实现方法
2019/07/19 Python
Python字符串大小写转换拼接删除空白
2019/09/19 Python
python绘制封闭多边形教程
2020/02/18 Python
污水处理保证书
2015/05/09 职场文书
教师读书笔记
2015/06/29 职场文书
python3 字符串str和bytes相互转换
2022/03/23 Python
《乙女游戏世界对路人角色很不友好》OP主题曲无字幕动画MV公开
2022/04/05 日漫
电脑开机弹出documents文件夹怎么回事?弹出documents文件夹解决方法
2022/04/08 数码科技