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

制作一个相对准确的网页加载进度条很多网页为了提升用户体验 都会在页面载入的时候有一个加载进度条的动画效果 以此来提升用户体验 比较知名的进度条库有 NProgress progressBar progressJS 等等 使用方式也差不多 如下所示就是 NProgress

欢迎大家来到IT世界,在知识的湖畔探索吧!

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

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

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

欢迎大家来到IT世界,在知识的湖畔探索吧!

可以看到提供 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 结构

欢迎大家来到IT世界,在知识的湖畔探索吧!<div class="progress"> <div></div> </div>

进度条的 默认 CSS

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

记得给进度条加上动画

欢迎大家来到IT世界,在知识的湖畔探索吧! transition: width .5s;

js 代码 如下:

document.addEventListener('readystatechange', function () { if(document.readyState === 'interactive') { document.querySelector('.progress div').style.width = '33%' } if(document.readyState === 'complete') { document.querySelector('.progress div').style.width = '66%' } } ) window.onload = function () { document.querySelector('.abc div').style.width = '100%' }

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

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

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

interactive



欢迎大家来到IT世界,在知识的湖畔探索吧!

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

onload

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://itzsg.com/125315.html

(0)
上一篇 42分钟前
下一篇 29分钟前

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们YX

mu99908888

在线咨询: 微信交谈

邮件:itzsgw@126.com

工作时间:时刻准备着!

关注微信