讲师中心 微信公众号

工具推荐

视频效率加速
剧云
剧云

中文短剧剧本制作平台

updream

一键生成高质量推广成片

AniShort
AniShort

AI短剧协同制作平台

Seko
Seko

AI短剧一键生成成片

如何为 Bootstrap 5.3 Spinner 添加平滑的淡入淡出动画效果

风丽吖_1211

风丽吖_1211

发布时间:2026-02-25 11:57:16

|

465人浏览过

|

来源于php中文网

原创

如何为 Bootstrap 5.3 Spinner 添加平滑的淡入淡出动画效果

本文详解如何利用 css visibility + opacity + transition 组合,配合 javascript 动态切换类名,实现 bootstrap 5.3 中 spinner 的优雅淡入淡出效果,避免生硬显示/隐藏。

本文详解如何利用 css visibility + opacity + transition 组合,配合 javascript 动态切换类名,实现 bootstrap 5.3 中 spinner 的优雅淡入淡出效果,避免生硬显示/隐藏。

在 Bootstrap 5.3 中,.spinner-border 或 .spinner-grow 默认是静态元素,直接通过 display: none/block 控制显隐会导致突兀的“闪现”或“瞬隐”,缺乏视觉连贯性。要实现真正平滑的淡入(fade in)与淡出(fade out),关键在于分离可见性控制与透明度过渡——这正是 visibility 与 opacity 协同工作的经典模式。

✅ 核心原理:CSS 过渡双保险

Bootstrap spinner 本身不内置 fade 动画,因此需自定义 CSS 类来接管过渡逻辑。推荐方案如下:

#spinner {
  position: absolute;
  top: 49%;
  left: 47%;
  width: 3.5rem;
  height: 3.5rem;
  visibility: visible; /* 初始可见 */
  opacity: 1;
  transition: visibility 0s linear 0s, opacity 300ms ease-in-out;
}

#spinner.hidespinner {
  visibility: hidden; /* 过渡结束后才真正不可见 */
  opacity: 0;
  transition: visibility 0s linear 300ms, opacity 300ms ease-in-out;
}

⚠️ 注意:visibility: hidden 本身不可动画,但配合 transition-delay 可实现「先淡出、再隐藏」的精确时序,防止元素在透明后仍占据布局或响应点击。

VPS Bootstrap
VPS Bootstrap

从零启动全新 VPS,完成 OpenClaw 完整部署,包括备份/恢复及恢复后验证。用于 OpenClaw 部署。

下载

✅ JavaScript 控制:类名切换替代 display 操作

将原代码中直接操作 style.display 的方式,替换为语义更清晰、更易维护的 class 切换:

function getData() {
  const spinner = document.getElementById("spinner");

  // 淡入:移除 hidespinner 类 → 触发 transition 回显
  spinner.classList.remove('hidespinner');

  setTimeout(() => {
    fetch("https://jsonplaceholder.typicode.com/posts")
      .then(response => {
        if (!response.ok) throw new Error(`HTTP ${response.status}`);
        return response.json();
      })
      .then(data => {
        const container = document.getElementById("dataContainer");
        data.slice(0, 5).forEach(item => {
          const div = document.createElement("div");
          const p = document.createElement("p");
          p.textContent = item.title;
          div.appendChild(p);
          container.appendChild(div);
        });

        // 淡出:添加 hidespinner 类 → 启动 fade-out 过渡
        spinner.classList.add('hidespinner');
      })
      .catch(err => {
        console.error("数据加载失败:", err);
        spinner.classList.add('hidespinner'); // 出错时也应隐藏 spinner
      });
  }, 5000);
}

getData();

? 提示:HTML 中 spinner 初始即带 hidespinner 类(如

),确保页面首次渲染时不意外显示;首次调用 remove('hidespinner') 即触发淡入。

✅ 完整 HTML 结构(精简可靠版)

<!DOCTYPE html>
<html lang="zh-CN">
<head>
  <meta charset="UTF-8" />
  <meta name="viewport" content="width=device-width, initial-scale=1" />
  <title>Bootstrap 5.3 Spinner 淡入淡出示例</title>
  <!-- Bootstrap 5.3 CSS -->
  <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" 
        rel="stylesheet" integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" 
        crossorigin="anonymous">
  <style>
    #spinner {
      position: absolute;
      top: 49%;
      left: 47%;
      width: 3.5rem;
      height: 3.5rem;
      visibility: visible;
      opacity: 1;
      transition: visibility 0s linear 0s, opacity 300ms ease-in-out;
    }
    #spinner.hidespinner {
      visibility: hidden;
      opacity: 0;
      transition: visibility 0s linear 300ms, opacity 300ms ease-in-out;
    }
  </style>
</head>
<body class="bg-light p-4">
  <!-- Spinner 默认隐藏(含 hidespinner 类) -->
  <div class="spinner-border text-primary hidespinner" role="status" id="spinner">
    <span class="visually-hidden">加载中...</span>
  </div>

  <div id="dataContainer" class="mt-5"></div>

  <!-- Bootstrap JS(含 Popper) -->
  <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js" 
          integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM" 
          crossorigin="anonymous"></script>
</body>
</html>

⚠️ 注意事项与最佳实践

  • 不要混用 display 和 opacity/visibility:一旦使用本方案,务必移除所有 element.style.display = ... 代码,否则会覆盖 CSS 过渡。
  • 错误处理必须包含 spinner 隐藏逻辑:网络失败、JSON 解析异常等场景下,仍需调用 spinner.classList.add('hidespinner'),避免 loading 状态永久悬挂。
  • 可访问性保留:.visually-hidden 已正确包裹提示文本,屏幕阅读器仍可感知“加载中”,符合 WCAG 标准。
  • 性能友好:visibility 不触发重排(reflow),仅影响绘制(paint)和合成(composite),适合高频切换场景。

通过以上结构化实现,你将获得一个专业、可复用、无障碍友好的 Bootstrap 5.3 spinner 动画方案——既满足设计对流畅性的要求,又保持代码健壮与可维护性。

热门AI工具

更多
蛙蛙写作

一款AI论文写作工具,主要用于超级AI智能写作助手,适合需要提升相关任务效率的用户。

UP简历
UP简历 Hot

一款AI办公效率工具,主要用于基于AI技术的免费在线简历制作工具,适合需要提升相关任务效率的用户。

讯飞智文

一款面向学习和办公场景的AI文档创作工具,可辅助生成PPT与Word文档,提高资料整理和内容制作效率。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

墨刀AI
墨刀AI Hot

一款AI图像与设计工具,主要用于产品经理的专属智能体,适合需要提升相关任务效率的用户。

切问学术

切问学术是一款AI论文写作工具,复旦大学NLP团队推出的AI学术智能体。

创客贴AI

创客贴AI是一款AI图像与设计工具,AI辅助的智能在线设计工具。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

相关专题

更多
json数据格式
json数据格式

JSON是一种轻量级的数据交换格式。本专题为大家带来json数据格式相关文章,帮助大家解决问题。

2335

2023.08.07

json是什么
json是什么

JSON是一种轻量级的数据交换格式,具有简洁、易读、跨平台和语言的特点,JSON数据是通过键值对的方式进行组织,其中键是字符串,值可以是字符串、数值、布尔值、数组、对象或者null,在Web开发、数据交换和配置文件等方面得到广泛应用。本专题为大家提供json相关的文章、下载、课程内容,供大家免费下载体验。

3842

2023.08.23

jquery怎么操作json
jquery怎么操作json

操作的方法有:1、“$.parseJSON(jsonString)”2、“$.getJSON(url, data, success)”;3、“$.each(obj, callback)”;4、“$.ajax()”。更多jquery怎么操作json的详细内容,可以访问本专题下面的文章。

1276

2023.10.13

go语言处理json数据方法
go语言处理json数据方法

本专题整合了go语言中处理json数据方法,阅读专题下面的文章了解更多详细内容。

4459

2025.09.10

bootstrap框架介绍
bootstrap框架介绍

本专题整合了bootstrap框架相关介绍,阅读专题下面的文章了解更多详细内容。

805

2026.03.18

bootstrap安装教程
bootstrap安装教程

本专题整合了bootstrap安装相关教程,阅读专题下面的文章了解更多详细操作教程。

199

2026.03.18

class在c语言中的意思
class在c语言中的意思

在C语言中,"class" 是一个关键字,用于定义一个类。想了解更多class的相关内容,可以阅读本专题下面的文章。

4616

2024.01.03

python中class的含义
python中class的含义

本专题整合了python中class的相关内容,阅读专题下面的文章了解更多详细内容。

326

2025.12.06

Go-Zero API开发使用教程
Go-Zero API开发使用教程

本专题聚焦Go-Zero的API开发,拆解.api描述文件的语法结构、路由与分组定义、参数绑定与校验规则,说明统一响应体、JWT鉴权、跨域与接口文档生成的落地方式,并给出网关聚合与接口测试的实践建议。

20

2026.11.12

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Bootstrap5 入门教程
Bootstrap5 入门教程

共0课时 | 0人学习

Bootstrap Components 组件文档
Bootstrap Components 组件文档

共0课时 | 0人学习

Bootstrap Grid 栅格系统
Bootstrap Grid 栅格系统

共0课时 | 0人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn