📅  最后修改于: 2023-12-03 15:38:42.241000             🧑  作者: Mango
在 Web 开发中,有时页面需要加载大量数据或资源,这会导致页面加载速度变慢,给用户带来不良体验。为了改善这种情况,我们可以在页面加载之前,先显示一个页面加载提示框,显式告诉用户页面正在加载中,等页面完全加载完成后再显示页面。下面我们简单介绍一下如何实现这个功能。
我们可以利用 CSS3 中的动画特性来实现一个页面加载提示框。这种方法比较简单,只需要将加载提示框的样式设置好即可。
具体实现步骤如下:
<div class="loader">Loading...</div>
.loader {
display: none;
position: fixed;
left: 0;
top: 0;
right: 0;
bottom: 0;
z-index: 9999;
background: rgba(255, 255, 255, 0.7);
}
.loader:before {
content: "";
position: absolute;
top: 50%;
left: 50%;
width: 50px;
height: 50px;
margin: -25px 0 0 -25px;
border-radius: 50%;
border: 5px solid #333;
border-top-color: #ccc;
animation: spin 1s linear infinite;
}
@keyframes spin {
from { transform: rotate(0deg); }
to { transform: rotate(360deg); }
}
window.onload = function() {
var loader = document.querySelector(".loader");
loader.style.display = "none";
}
// 或者使用 jQuery
$(window).on("load", function() {
$(".loader").fadeOut("fast");
});
这里使用了 window.onload
事件和 jQuery 的 load()
事件,当页面加载完成后,控制加载提示框隐藏。
除了上面介绍的 CSS3 动画外,还可以使用一些第三方库来实现页面加载提示框。下面我们就介绍一下比较常用的几款库。
Pace.js 是一款轻量级的页面加载进度条库,无需依赖 jQuery 或其他 JavaScript 库。Pace.js 通过监听 AJAX 请求、页面资源加载以及页面交互等方式,来实时计算页面的加载进度,并将其展示给用户。
使用 Pace.js 很简单,只需要在 HTML 中添加对应的 JavaScript 和 CSS 文件即可。
<!-- JS 和 CSS 文件 -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/pace/1.0.2/pace.min.js"></script>
<link href="https://cdnjs.cloudflare.com/ajax/libs/pace/1.0.2/themes/black/pace-theme-minimal.css" rel="stylesheet">
NProgress.js 是一个基于 jQuery 的页面加载进度条库,同时支持 AJAX 请求的加载进度。NProgress.js 使用 Ajax 请求时间来模拟进度条加载的速度,让用户感觉更真实。
使用 NProgress.js 也很简单,在 HTML 中添加对应的 JS 和 CSS 文件即可。
<!-- JS 和 CSS 文件 -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/nprogress/0.2.0/nprogress.min.js"></script>
<link href="https://cdnjs.cloudflare.com/ajax/libs/nprogress/0.2.0/nprogress.min.css" rel="stylesheet">
Spin.js 是一个纯 JavaScript 实现的加载指示器库,支持所有主流浏览器。Spin.js 生成的内容实际上是一个动画,该动画支持多种预设的样式,也可以自定义样式来实现更好的效果。
使用 Spin.js 也很简单,只需要在 HTML 中添加对应的 JS 和 CSS 文件,然后通过 JavaScript 在需要加载指示器的位置添加相应的 DOM 元素即可。
<!-- JS 和 CSS 文件 -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/spin.js/2.3.2/spin.min.js"></script>
<link href="https://cdnjs.cloudflare.com/ajax/libs/spin.js/2.3.2/spin.min.css" rel="stylesheet">
// 在需要加载指示器的位置添加 DOM 元素
var target = document.getElementById("foo");
var spinner = new Spinner({ lines: 10, width: 4, radius: 10, color: "#333" }).spin(target);
以上就是在页面加载完成之前显示页面加载 div 的方法和相应介绍。可以根据开发需求和具体情况选择适合自己的方法。