新闻中心

实现Bootstrap 5.3加载指示器平滑淡入淡出效果的教程

2025-10-16
浏览次数:
返回列表

实现Bootstrap 5.3加载指示器平滑淡入淡出效果的教程

本教程详细讲解如何利用css的opacity和visibility属性结合transition,为bootstrap 5.3加载指示器(spinner)创建平滑的淡入淡出动画效果。文章通过示例代码展示了从初始化隐藏、加载时淡入显示到数据加载完成后淡出隐藏的完整实现过程,并提供了关键的css过渡技巧和注意事项,以提升用户体验。

在现代Web应用中,加载指示器(如Bootstrap Spinner)是提升用户体验的重要组成部分。它们在数据获取或处理过程中向用户提供视觉反馈,避免页面无响应的错觉。然而,直接通过修改元素的display属性来显示或隐藏加载指示器会导致突兀的视觉切换。为了实现更平滑、更专业的过渡效果,我们可以利用CSS的opacity和visibility属性配合transition来创建淡入淡出动画。

核心概念:利用CSS过渡实现平滑动画

实现元素的平滑淡入淡出效果,通常涉及opacity(不透明度)和visibility(可见性)这两个CSS属性。

  • opacity:控制元素的透明度,从0(完全透明)到1(完全不透明)。改变opacity可以触发平滑过渡。
  • visibility:控制元素的可见性,visible表示可见,hidden表示隐藏。hidden状态的元素不占用布局空间,也不响应事件。

单独使用opacity进行过渡会导致元素在完全透明后仍然占用空间并可能捕获事件。为了解决这个问题,我们引入visibility属性,并巧妙地利用其transition-delay。

关键技巧:visibility的延迟过渡

  • 淡出时: 当元素从可见变为隐藏时,我们希望opacity先完成从1到0的过渡,然后再将visibility设置为hidden。因此,visibility的过渡延迟应与opacity的过渡时长相同。
  • 淡入时: 当元素从隐藏变为可见时,我们希望visibility立即变为visible(transition-delay: 0s),这样元素就能开始响应事件并占用空间,然后opacity再从0过渡到1。

实现步骤

我们将通过一个模拟数据加载的场景来演示如何实现Bootstrap Spinner的淡入淡出效果。

察言观数AskTable 察言观数AskTable

企业级AI数据表格智能体平台

察言观数AskTable 78 查看详情 察言观数AskTable

1. HTML 结构

首先,在HTML中设置Bootstrap Spinner和用于显示数据的容器。注意,初始时为Spinner添加hidespinner类,使其默认处于隐藏状态。

<!DOCTYPE html>
<html lang="zh-CN">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Bootstrap Spinner 淡入淡出教程</title>
  <!-- 引入 Bootstrap 5.3 CSS -->
  <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous" />
  <style>
    /* 在这里添加自定义CSS */
  </style>
</head>
<body>
  <div class="spinner-border m-5 hidespinner" role="status" id="spinner">
    <span class="visually-hidden">加载中...</span>
  </div>
  <div id="dataContainer" class="container mt-4"></div>

  <!-- 引入 Bootstrap 5.3 JS Bundle -->
  <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js" integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM" crossorigin="anonymous"></script>
  <script>
    // 在这里添加J*aScript代码
  </script>
</body>
</html>

2. CSS 样式定义

定义#spinner的默认样式和hidespinner类,实现淡入淡出效果。

#spinner {
  position: fixed; /* 使用fixed确保即使页面滚动也能保持居中 */
  top: 50%;
  left: 50%;
  width: 3.5rem;
  height: 3.5rem;
  transform: translate(-50%, -50%); /* 居中显示 */
  z-index: 1050; /* 确保在其他内容之上 */

  /* 默认可见状态 */
  visibility: visible;
  opacity: 1;
  /* 淡入过渡:opacity立即开始,visibility无延迟 */
  transition: visibility 0s linear 0s, opacity 300ms ease-in-out;
}

#spinner.hidespinner {
  /* 隐藏状态 */
  visibility: hidden;
  opacity: 0;
  /* 淡出过渡:opacity先完成,visibility在300ms后变为hidden */
  transition: visibility 0s linear 300ms, opacity 300ms ease-in-out;
}

CSS说明:

  • position: fixed; top: 50%; left: 50%; transform: translate(-50%, -50%);:用于将Spinner固定并大致居中显示在视口上。

以上就是实现Bootstrap 5.3加载指示器平滑淡入淡出效果的教程的详细内容,更多请关注其它相关文章!


# 明度  # 合肥营销推广加盟公司  # 阿里关键词排名因素  # 营销推广页面图片素材  # 承德网站建设网站维护  # 河源互联网推广网络营销  # 安徽网站建设行业分析  # 洛阳网站建设开发哪家好  # seo在线 外国  # 怎么建立网站知乎推广群  # 兰州网站建设怎么收费  # 就能  # 见性  # 也不  # 容器内  # 拖拽  # css  # 在这里  # 自定义  # 复选框  # 加载  # .net  # css属性  # cdn  # ai  # npm  # bootstrap  # js  # html  # java  # javascript 


相关栏目: 【 科技资讯46185 】 【 网络学院92790


相关推荐: 星露谷物语官网入口 星露谷物语游戏官网入口  Sublime怎么配置Nim语言环境_Sublime Nim代码高亮与补全  解决Django多数据库/多Schema环境下外键迁移问题  Win11怎么安装Linux子系统 Win11 WSL2安装Ubuntu及环境配置指南  php源码怎么在电脑上测试_电脑测试php源码方法步骤【教程】  使用 Pandas 高效处理 .dat 文件:数据清洗与数值计算实战  如何在Python中使用Optional类型处理可变对象并避免Pylint警告  Go语言中对Map值调用带指针接收者方法:原理与最佳实践  VS Code远程开发时如何处理文件权限问题  冬*霸灯泡不亮怎么办_浴霸取暖灯一盏不亮的灯座清洁修复法  PDO预处理语句中冒号的正确处理:区分SQL函数格式与命名占位符  微信客户端如何收红包_微信客户端接收红包使用教程  解决Rails应用中内容错位与Turbo警告:meta标签误用导致富文本渲染异常  单12V-2&#215;6实现为RTX 5090供电750W!甚至都没敢跑分  响应式图片在网页设计中的正确实现方法  J*aScript中localStorage数据的获取、清洗与格式化教程  Mac终端命令大全_Mac常用Terminal指令速查  C++ vector二维数组定义_C++ vector of vector用法  谷歌浏览器一键优化方案_谷歌浏览器直达主页极速不卡版  NetBeans Ant项目:自动化将资源文件复制到dist目录的教程  c++ dfs和bfs代码 c++深度广度优先搜索算法  AO3最新入口2025公告_AO3中文官网合集  如何在 Windows 11 中启动游戏手柄设置  composer的"require-dev"部分是用来做什么的?  深入理解J*a链表中的IPosition接口与使用  Go语言中Map存储的结构体如何调用指针方法:深入解析与实践  解决Flask中Quill编辑器内容提交失败及TypeError的指南  Shopware订单对象中获取产品自定义字段的正确方法  整合Supabase认证与Django模型:跨模式迁移的解决方案  知乎APP怎么管理已购盐选内容_知乎APP盐选内容购买记录与查看方法  Windows10怎么开启夜间模式 Windows10系统设置调整色温与亮度缓解夜间用眼疲劳【教程】  特斯拉自动驾驶房车计划曝光 原型车将于2027年亮相  QQ邮箱官方登录入口_QQ邮箱网页版快捷使用平台  Golang如何优化CPU绑定任务分配策略_Golang CPU任务分配优化实践  MinIO大规模对象列表性能瓶颈深度解析与外部元数据管理策略  优化大型XML文件解析:基于Python流式处理的内存高效方案  必由学官方平台入口 必由学在线课堂登录地址  Python多线程中正确使用sigwait处理SIGALRM信号  小红书商家版怎样在笔记嵌入商品卡路径_小红书商家版在笔记嵌入商品卡路径【挂载教程】  如何在Promise链中有效终止错误处理后的执行  漫蛙网页登录入口 漫蛙漫画官方授权网址  word中如何让数字纵向排列_Word数字纵向排列方法  火狐浏览器占用内存高卡顿怎么办 火狐浏览器性能优化设置技巧  谷歌浏览器无痕模式怎么开 Chrome开启无痕浏览设置方法【教程】  C++如何实现异步操作_C++11使用std::future和std::async进行异步编程  win11 arm版怎么安装 M1/M2 Mac虚拟机安装ARM win11的方法  J*aScript:在map操作中高效处理空数组  Angular Material 垂直步进器:实现底部到顶部排序的教程  解决macOS Tkinter应用双击启动崩溃:PyInstaller打包指南  如何为你的Composer包编写自动化测试_集成PHPUnit到Composer的scripts工作流 

搜索