laravel-admin加载动画
xuexi 2026-01-27 17:58:02 发表在:PHP 查看数:34

简单版本

在项目的 public/admin/css/ 目录下创建 loading.css 文件(如果目录不存在请手动创建):
/* 全局加载遮罩层 */
.admin-loading-mask {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background-color: rgba(255, 255, 255, 0.8);
    z-index: 9999;
    display: flex;
    justify-content: center;
    align-items: center;
    transition: opacity 0.3s ease;
}

/* 加载动画样式(旋转的圆圈) */
.admin-loading-spinner {
    width: 50px;
    height: 50px;
    border: 5px solid #f3f3f3;
    border-top: 5px solid #3498db;
    border-radius: 50%;
    animation: spin 1s linear infinite;
}

/* 旋转动画 */
@keyframes spin {
    0% { transform: rotate(0deg); }
    100% { transform: rotate(360deg); }
}

/* 加载完成后隐藏 */
.admin-loading-mask.hidden {
    opacity: 0;
    pointer-events: none;
}

js

在项目的 public/admin/js/ 目录下创建 loading.js 文件:
$(function () {
    // 1. 添加加载动画的HTML结构到页面
    const loadingHtml = `
        <div class="admin-loading-mask">
            <div class="admin-loading-spinner"></div>
        </div>
    `;
    $('body').prepend(loadingHtml);

    // 2. 监听所有AJAX请求开始事件 - 显示加载动画
    $(document).ajaxStart(function () {
        // 只在列表页面显示加载动画(可根据需要调整选择器)
        if ($('.grid-table').length > 0) {
            $('.admin-loading-mask').removeClass('hidden');
        }
    });

    // 3. 监听所有AJAX请求完成事件 - 隐藏加载动画
    $(document).ajaxComplete(function () {
        // 延迟一点隐藏,避免动画闪烁
        setTimeout(() => {
            $('.admin-loading-mask').addClass('hidden');
        }, 300);
    });

    // 4. 初始页面加载完成后隐藏(处理首次加载)
    $(window).on('load', function () {
        $('.admin-loading-mask').addClass('hidden');
    });
});

在 Laravel-admin 中引入自定义资源

打开项目中的 app/Admin/bootstrap.php 文件,添加以下代码来引入自定义的 CSS 和 JS 文件:
use Encore\Admin\Facades\Admin;

// 引入自定义加载动画样式
Admin::css('/admin/css/loading.css');

// 引入自定义加载动画脚本(注意要在jQuery之后引入)
Admin::js('/admin/js/loading.js');
最近访问时间:2026-02-04 04:58:10
知识库:416条鸣谢:TAY  备案号:蜀ICP备2024090044号-1