为什么需要加载进度条?

在大型网站或网络较慢的情况下,页面加载可能需要几秒甚至更长时间,如果没有视觉反馈,用户可能会认为页面卡住或出错了,从而选择关闭页面,一个动态的进度条可以:

jquery网页加载进度条插件
(图片来源网络,侵删)
  • 提供即时反馈:让用户知道系统正在工作。
  • 提升感知性能:让等待时间感觉更短。
  • 改善整体用户体验:使交互过程更流畅、更专业。

推荐几个优秀的 jQuery 进度条插件

这里推荐几个功能强大、使用简单且维护良好的插件。

Pace.js - 最简单、最优雅的选择

特点

  • 零配置:引入后几乎什么都不用做,它就能自动工作。
  • 多种主题:内置多种进度条样式(条形、弹跳、光晕、顶部微进度等)。
  • 自动检测:能自动检测 AJAX 请求、事件循环、页面资源加载等。
  • 轻量级:体积非常小,对性能影响极小。

官网https://github.com/HubSpot/pace

使用方法

jquery网页加载进度条插件
(图片来源网络,侵删)

第一步:引入 jQuery 和 Pace.js

在 HTML 文件的 <head> 标签内引入 Pace.js 的 CSS 和 JS 文件,建议从 CDN 引入。

<head>
    <!-- 引入 Pace.js 的 CSS 文件 (选择一个你喜欢的主题) -->
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/pace/1.2.4/themes/pace-theme-center-circle.min.css" integrity="sha256-4fQcI0J7u2Wv6sZfL0c9yVz5K/gVh0KlDp5Yb5yYyY=" crossorigin="anonymous" />
    <!-- 引入 jQuery (Pace.js 依赖于 jQuery) -->
    <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
    <!-- 引入 Pace.js 的 JS 文件 -->
    <script src="https://cdnjs.cloudflare.com/ajax/libs/pace/1.2.4/pace.min.js" integrity="sha256-gqd7YTjg/BtfqWSwsJOvndl0Bxc8gFQuFz7C38GSao=" crossorigin="anonymous"></script>
</head>

第二步:配置(可选)

你可以在 <script> 标签内进行一些简单的配置,比如选择主题。

<script>
    // 在 Pace.js 加载前进行配置
    Pace.options = {
        elements: true, // 监听所有元素
        restartOnRequestAfter: false, // 在 AJAX 请求后不重启
        target: 'body', // 进度条容器
        eventLag: false // 不监听事件延迟
    };
</script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/pace/1.2.4/pace.min.js"></script>

效果: Pace.js 会自动在页面加载时显示一个优雅的进度动画,加载完成后自动消失。


PageProgress.js - 功能丰富、高度可定制

特点

  • 高度可定制:可以自定义进度条的颜色、高度、位置、动画效果等。
  • 多种触发模式:可以基于页面滚动、AJAX 请求或手动触发。
  • 显示加载百分比:可以显示具体的加载百分比数字。
  • 事件支持:提供了丰富的事件(如 start, progress, done),方便你进行扩展。

官网https://github.com/MrSaints/PageProgress

使用方法

第一步:引入 jQuery 和 PageProgress.js

<head>
    <!-- 引入 jQuery -->
    <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
    <!-- 引入 PageProgress.js 的 CSS -->
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/pageprogress@1.1.2/dist/pageprogress.css">
    <!-- 引入 PageProgress.js 的 JS -->
    <script src="https://cdn.jsdelivr.net/npm/pageprogress@1.1.2/dist/pageprogress.js"></script>
</head>

第二步:初始化和配置

<script> 标签内初始化插件并进行配置。

<script>
    $(document).ready(function() {
        new PageProgress({
            height: 5, // 进度条高度
            color: '#ff0000', // 进度条颜色
            backgroundColor: '#eeeeee', // 背景颜色
            duration: 200, // 动画持续时间 (毫秒)
            easing: 'ease', // 动画效果
            autoRestart: false, // 在 AJAX 请求后自动重启
            target: 'body', // 目标元素
            listenOn: 'window', // 监听对象
            showPercentage: true, // 显示百分比
            onProgress: function(percent) {
                // 进度更新时的回调函数
                console.log('Loading: ' + percent + '%');
            },
            onComplete: function() {
                // 加载完成时的回调函数
                console.log('Loading complete!');
            }
        });
    });
</script>

效果: 你可以根据需要创建出完全符合你网站风格的进度条。


NProgress.js - 专为 AJAX 应用设计

特点

  • 轻量级:专注于提供流畅的进度条体验。
  • 无依赖:除了 jQuery 之外,它本身没有其他依赖。
  • 专为 AJAX 优化:非常适合在单页应用中,为每个 AJAX 请求显示进度。
  • 简单易用:API 非常简单,只有 start(), set(), inc(), done() 等几个方法。

官网https://ricostacruz.com/nprogress/

使用方法

第一步:引入 jQuery 和 NProgress.js

<head>
    <!-- 引入 jQuery -->
    <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
    <!-- 引入 NProgress.js 的 CSS -->
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/nprogress/0.2.0/nprogress.min.css" integrity="sha256-cko8G+asAtsF3uUz+4yKmt5A1WVpA4sP8+o7AytoQ=" crossorigin="anonymous" />
    <!-- 引入 NProgress.js 的 JS -->
    <script src="https://cdnjs.cloudflare.com/ajax/libs/nprogress/0.2.0/nprogress.min.js" integrity="sha256-pT4/D1b4hb1cJ0yZkZ8G7O4D2pNJJ1GcT2Z9eY8lUw=" crossorigin="anonymous"></script>
</head>

第二步:在 AJAX 请求中使用

NProgress 通常与 AJAX 请求结合使用。

<script>
    // 页面开始加载时启动进度条
    $(document).ready(function() {
        NProgress.start();
    });
    // 模拟一个 AJAX 请求
    $.ajax({
        url: 'https://api.example.com/data',
        method: 'GET',
        success: function(data) {
            console.log('Data loaded:', data);
            // 请求完成时,进度条结束
            NProgress.done();
        },
        error: function() {
            console.error('Failed to load data.');
            // 即使出错,也结束进度条
            NProgress.done();
        }
    });
    // 你也可以手动控制进度
    // NProgress.inc(); // 增加一点进度
    // NProgress.set(0.4); // 设置进度为 40%
</script>

效果: NProgress 通常显示在页面顶部,非常适合为异步操作提供反馈。


如何选择?

插件 优点 缺点 适用场景
Pace.js 零配置,开箱即用,主题丰富 定制性相对较弱 快速开发,任何需要页面加载进度条的网站,尤其是博客、企业官网等。
PageProgress.js 功能强大,高度可定制,支持百分比和事件 配置项较多,需要一些代码 UI 要求高的项目,需要完全自定义进度条样式和交互逻辑。
NProgress.js 轻量,专为 AJAX 优化,API 简单 不适用于整个页面加载,主要用于异步操作 单页应用,需要为每个 AJAX 请求、路由切换等操作显示进度。

总结建议

  • 如果你只是想快速给网站加一个加载进度条,Pace.js 是不二之选
  • 如果你对进度条的样式和功能有非常具体的要求,PageProgress.js 会给你足够的自由度。
  • 如果你的网站是单页应用,充满了 AJAX 请求,NProgress.js 是最合适的选择。

希望这份详细的介绍能帮助你选择并使用合适的 jQuery 加载进度条插件!