You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在页面加载完成前显示AJAX加载动画替代初始白屏

问题根源

你当前的逻辑完全颠倒了:jQuery(window).load() 事件会等待页面所有资源(图片、样式、脚本、字体等)全部加载完成后才会执行,你把加载动画的显示逻辑写在这个事件里,自然要等页面加载完毕才会渲染动画,根本覆盖不了加载阶段的白屏时间。

解决方案

1. 调整HTML结构

将加载动画相关节点直接放在 <body> 标签的最开头,不要依赖JS动态插入,让页面解析时优先渲染加载动画:

<body>
  <!-- 直接放在body最开头,优先加载渲染 -->
  <div class='ui-loader-background'></div>
  <div id="loadingDiv">
    <div class="cssload-thecube">
      <div class="cssload-cube cssload-c1"></div>
      <div class="cssload-cube cssload-c2"></div>
      <div class="cssload-cube cssload-c4"></div>
      <div class="cssload-cube cssload-c3"></div>
    </div>
  </div>
  <!-- 后面是你原来的页面内容 -->
  ...
</body>

2. 前置加载动画样式

把加载动画相关的CSS直接写在 <head> 内的 <style> 标签中,不要放在外部CSS文件,避免外部资源加载延迟导致动画样式不生效,依然出现白屏:

<head>
  <style>
    .ui-loader-background {
      position: fixed;
      top: 0;
      left: 0;
      width: 100vw;
      height: 100vh;
      background: #ffffff; /* 替换为你需要的背景色,完全覆盖白屏 */
      z-index: 99998;
    }
    #loadingDiv {
      position: fixed;
      top: 50%;
      left: 50%;
      transform: translate(-50%, -50%);
      z-index: 99999;
      /* 你原来的动画样式补充在这里 */
    }
  </style>
  <!-- 后面是其他外部CSS、JS引入 -->
  ...
</head>

3. 调整JS逻辑

不需要用JS控制动画显示,反过来在页面加载完成后隐藏/移除动画即可:

jQuery(window).on('load', function() {
  // 加载完成后渐隐加载动画,可自定义过渡时间
  jQuery("#loadingDiv, .ui-loader-background").fadeOut(300, function() {
    jQuery(this).remove(); // 隐藏后移除节点,释放资源
  });
});

内容的提问来源于stack exchange,提问作者eSupply

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 20:39:03