百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术分类 > 正文

javascript进度条(jquery进度条代码实现)

feilongw 2025-04-15 17:18 13 浏览

制作一个相对准确的网页加载进度条

很多网页为了提升用户体验,都会在页面载入的时候有一个加载进度条的动画效果,以此来提升用户体验。

比较知名的进度条库有 NProgressprogressBarprogressJS 等等。使用方式也差不多,如下所示就是 NProgress 的使用方式:

NProgress.start();
NProgress.done();
NProgress.remove();

可以看到提供 startdoneremove 等方法,分别对应 开始完成删除进度条容器,并且提供 set 方法可以设置进度条的加载速度等。

那么,有没有办法依据页面加载的事件制作一个能较为准确表达加载进度的进度条呢?

其实是可以的。

首先来看网页加载的事件有哪些(不考虑 IEDOMContentLoaded):

document.readystatechange 事件

readystatechange 会在 每次 readyState 发生变化的时候触发

readyState 有以下状态:

uninitialized - 还未开始载入

loading - 载入中

interactive - 互动文档已经完成加载,文档已被解析,但是诸如图像,样式表和框架之类的资源仍在加载,文档与用户可以开始交互

complete - 载入完成

window.onload 事件

load 事件在 window,指的是网页资源已经加载完毕(包括图片、音频、脚本、插件资源以及 CSS)

所有的资源全部加载完成后会触发 windowload 事件。

通俗一点地说 :

  1. document.readystatechange 事件会触发多次。
  2. Dom Tree 生成完毕 那么 document.readyState 状态翻转为 complete
  3. 当 网页所有资源加载完毕 window.onload 触发

但是由于当前页面加载时候,document.readyStateuninitializedloading 这2个状态是无法捕获的。因为 Dom Tree 还未生成,JS 代码尚未能执行,所以能捕获的状态只有interactivecomplete 这2个状态

此时,拥有了3个可用节点,分别是

document.readyStateinteractive

document.readyStatecomplete

window.onload

进度条 DOM 结构

进度条的 默认 CSS

.abc {
  width: %;
  height: 10px;
}

.abc div {
  width: 0;
  height: %;
  background: green;
}

记得给进度条加上动画

  transition: width .5s;

js 代码 如下:

document.addEventListener('readystatechange', function () {
  if(document.readyState === 'interactive') {
    document.querySelector('.progress div').style.width = '%'
  }

  if(document.readyState === 'complete') {
    document.querySelector('.progress div').style.width = '%'
  }
} )
window.onload = function () {
  document.querySelector('.abc div').style.width = '%'
}

分别在 3个节点 让 进度条 width 涨 % % 和 %

此时 就得到了一个 相对准确的 加载进度条

相关推荐

java-verbose是什么意思 java -verbose

灵魂拷问:为什么short、byte会被提升为int?boolean到底多大?为什么short、byte会被提升为int?在学习Java语法的时候,知道short、byte、byte类型在做运...

Android Hanlder 揭密之路- 深入理解异步消息传递机制Looper、Handler、Message三者关系

Handler知识点梳理:Handler、Looper以及Message三者之间的关系前言Handler、Looper以及Message之间的关系,概括性来说,Looper负责的是创建一个Me...

csdn freemarker jquery 预览word

高质量人才助推高质量发展——西安市高新区“精益创业带动就业示范行动”系列活动西安市高新区“精益创业带动就业示范行动”系列活动已于8月日在高新区软件新城正式启动。本周五(8月日)上午点分,系列活动之“直...

android 修改菜单menu背景

教你把手机的状态栏和通知栏改造成安卓L风格说道颜值,就得吐槽一下安卓及一下的版本了。原生真的是丑,丑到没朋友。到了安卓,谷歌终于大刀阔斧的对安卓的颜值进行了大动刀。【下拉通知栏】那么,安卓有没有办法搞...

DCDC架构中 dcdc类型(dcdc的主要作用)

DC-DC工作原理,看完你就懂了上篇文章说了LDO的原理,那本篇就来说一下DCDC的工作原理吧。开关电源:是一种高频化电能转换装置,其主要利用电力电子开关器件(如晶体管、MOS管、可控晶闸管等),通过...

getPath(),getAbsolutePath(),getCanonicalPath() 区别

java获取文件路径1.前言Java开发中我们经常要获取文件的路径,比如读取配置文件等等。今天我们就关于文件的路径和如何读取文件简单地探讨一下。2.文件的路径文件的路径通常有相对路径与绝对...

android 多任务键app后台重新唤起生命周期 安卓任务管理器快捷键

好用的备忘录待办提醒APP任务管理工具怎么选?在这个信息高速流通的时代,选择一款合适的任务管理应用变得尤为关键。一个好的任务管理工具不仅能帮助我们更好地规划时间、提升效率,还能在快节奏的生活中保持条...

android数据包下载地址 数据包apk

《地牢猎手5》安卓怎么下载APK数据包下载万众期待的地牢猎手5终于推出啦,此次Gameloft在安卓平台首发推出,不过目前谷歌商店还未提供正式下载数据包,不过不用担心,蚕豆网小编为大家带来了地牢猎手...

51c大模型~合集24(c5.0模型)

北大校友打造的个智能体「我的世界」,背后原理揭晓了!来源:量子位北大校友打造的个智能体「我的世界」,背后原理揭晓了!团队全新公开页技术报告,详尽解密AI智能体如何产生专业化分工、社交互动、甚至传播虚拟...

ao3archive of own our如何使用

肖战ao3事件始末揭秘ao3是啥意思肖战粉丝举报AO3为什么惹众怒3月4日凌晨2时分,肖战工作室再次发表声明:肖战海外社交账号已无法正常登陆,任何更改均非本人及工作人员操作,后续动作均与肖战本人无关...

ansible变量运算 ansible查看变量的命令

Python中的Ansible库在Python中集成Ansible功能,主要通过以下两种方式实现,结合官方库和核心API可满足不同场景的自动化需求:一、AnsibleRunner库Ansible官方...

25个简单shell例子(shell实例讲解)

shell编程其实真的很简单(一)如今,不会Linux的程序员都不意思说自己是程序员,而不会shell编程就不能说自己会Linux。说起来似乎shell编程很屌啊,然而不用担心,其实shell编程真的...

ByConity ELT 测试体验

字节跳动开源云原生数仓引擎ByConity技术详解与应用导读本文介绍字节跳动开源的云原生数仓引擎,ByConity。主要包含四个主题:1.ByConity产生背景2.ByConity设计...

45个小众而实用的NLP开源字典和工具

从算法到产品:NLP技术的应用演变文章回顾了近几年NLP的发展历程,从项目实施的两个阶段中带我们梳理了NLP技术的应用演变。第一个与大家分享的Case,基于NLP展开。分为3个部分,分别是NLP的发展...

[美国]《速度与激情6》[HD-RMVB.1024x576.中英双字][2013年动作]

安利电影。爱情:不良教育里克(费雷o马丁内兹饰)和伊格莱西奥(弗朗西斯科o拜奥拉饰)是教会学校的同学,更是一对同性恋人。学校的莫雷神父以留下恩里克为诱饵占有了伊格莱西奥,但最终恩里克还是离开了教会...