我想制作一个预加载器栏,显示页面在完全加载之前加载了多少(类似于 pushcollective.com,请注意页面完全加载之前的上部栏)。
我怎样才能实现这样的目标?我想先将用户引导到加载页面,然后使用 AJAX 请求页面,并在div
完成加载后将请求的内容放入 a 中。但我不认为这是一个干净的解决方案?
我想制作一个预加载器栏,显示页面在完全加载之前加载了多少(类似于 pushcollective.com,请注意页面完全加载之前的上部栏)。
我怎样才能实现这样的目标?我想先将用户引导到加载页面,然后使用 AJAX 请求页面,并在div
完成加载后将请求的内容放入 a 中。但我不认为这是一个干净的解决方案?
您提供链接的网站 ( http://pushcollective.com/ ) 使用NProgress.js 插件。据我所知,它使用随机值来增加进度条(恕我直言,这不是一个非常优雅的解决方案,但我想这是唯一可能的)。
这是插件代码的片段:
/**
* Increments by a random amount.
*/
NProgress.inc = function(amount) {
var n = NProgress.status;
if (!n) {
return NProgress.start();
} else {
if (typeof amount !== 'number') {
amount = (1 - n) * clamp(Math.random() * n, 0.1, 0.95);
}
n = clamp(n + amount, 0, 0.994);
return NProgress.set(n);
}
};
好吧,我以 结尾pacejs
,它非常酷,易于使用且易于配置。大家可以看看这里,谢谢大家的回答。
我个人不会想到我要提出的“干净”解决方案,但是这是另一种方法,无需额外的 AJAX 调用来加载页面:
将您的内容分成两部分:进度条和其他所有内容(这将是实际的页面内容)。进度条是永无止境的,以对数方式填充。填充逻辑应位于紧跟在 . 这样,它将在所有内容加载之前开始工作,但在进度条出现之后。
最初隐藏“实际内容”块。订阅 DOM 就绪事件。当它触发时,隐藏进度并显示内容。或者,您可以在一秒钟内显示完整进度,然后将其隐藏。
我不认为上面的内容是“干净的”,因为它没有反映实际的进展,但在你提到的例子中似乎也没有这样做。
最近我遇到了这个简单易用的 jQuery 调用 PreLoadMe 插件,我发现它是迄今为止最好的:
http://niklausgerber.com/blog/preloadme-a-lightweight-jquery-website-preloader/