怎样给HTML表格添加加载状态?CSS动画实现数据等待效果

夏萱小哥_3301

夏萱小哥_3301

2026-07-09

577人浏览

原创

避免表格加载时布局抖动的正确做法是预先渲染表头和空tbody(含占位tr),用绝对定位遮罩层配合linear-gradient骨架动画,并通过toggletableloading原子化控制状态。

怎样给html表格添加加载状态?css动画实现数据等待效果

表格加载中时如何避免布局抖动?

直接给 <table> 加 <code>opacity: 0.5visibility: hidden 会导致内容消失后高度塌陷,后续数据渲染时页面“跳一下”。正确做法是保持表格结构占位:用 pointer-events: none 锁定交互,配合 opacitytransition 实现渐变遮罩,同时确保 <tbody> 始终存在(哪怕为空)。<p>常见错误是等 AJAX 返回后再插入整个 <code><table>,这必然引发重排。应预先渲染表头和空 <code><tbody>,仅更新数据行。<ul><li>表头 <code><thead> 必须提前写死,不可动态生成<li>空 <code><tbody> 至少包含一个带 <code>colspan 的占位 <tr>,防止高度为 0<li>加载状态层需用 <code>position: absolute 叠在表格上方,且父容器设 position: relative

用 CSS @keyframes 实现骨架屏式加载动画

纯 CSS 骨架屏比 GIF 更轻量、可缩放,且能匹配表格列宽。关键在于用 linear-gradient 模拟高亮条扫过效果,并通过 background-sizebackground-position 控制动画节奏。

示例中,给加载遮罩层添加如下样式:

.table-loading {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background: linear-gradient(90deg, transparent, rgba(0,0,0,0.05), transparent);
  background-size: 200% 100%;
  animation: loading-shimmer 1.5s infinite;
}
<p>@keyframes loading-shimmer {
0% { background-position: -200% 0; }
100% { background-position: 200% 0; }
}</p>

注意:动画需作用于遮罩层而非表格本身,否则会干扰表格内文字渲染;background-size 设为 200% 100% 是为了让渐变区域足够宽,实现平滑扫过感。

JavaScript 控制加载状态的最小必要逻辑

状态切换必须原子化,避免多次调用 showLoading() / hideLoading() 导致 class 冲突。推荐用单个布尔值标记当前状态,并封装成函数:

Doc To HTML
Doc To HTML

使用 MinerU 文档处理引擎将 Word 文档(.doc、.docx)转换为保留结构和格式的干净 HTML。

下载
function toggleTableLoading(isLoading) {
  const table = document.querySelector('#data-table');
  const overlay = table.querySelector('.table-loading');
<p>if (isLoading) {
table.classList.add('loading');
overlay.style.display = 'block';
} else {
table.classList.remove('loading');
overlay.style.display = 'none';
}
}</p>

容易被忽略的点:

  • 务必检查 overlay 是否已存在,首次调用 toggleTableLoading(true) 时若未预置 DOM,需动态创建
  • AJAX 请求失败时也要调用 toggleTableLoading(false),否则用户卡在加载态
  • 不要在 fetch().then() 里直接操作 DOM,先校验 response.ok,再更新表格

移动端表格加载动画的适配要点

小屏幕下,横向滚动的表格常因加载遮罩层宽度不足导致右侧漏出空白。此时不能简单设 width: 100vw,而应让遮罩层跟随表格实际滚动宽度。

解决方案是监听 scroll 事件并同步设置遮罩层 transform: translateX(),但更稳妥的做法是将遮罩层包裹在 <div class="table-container"> 内,并让该容器负责 overflow 和定位:<pre class="brush:php;toolbar:false;">.table-container { position: relative; overflow-x: auto; } &lt;p&gt;.table-loading { position: absolute; top: 0; left: 0; width: 100%; height: 100%; /&lt;em&gt; 不设 transform,靠父容器 overflow 自动裁剪 &lt;/em&gt;/ }&lt;/p&gt;</pre> <p>这样即使表格内容超出视口,遮罩层也会随容器自然滚动覆盖,无需 JS 干预。</p> <p>复杂点在于混合使用固定表头和横向滚动时,遮罩层需分层处理:上层盖住 <code><thead>,下层盖住 <code><tbody>,否则滚动时会出现遮罩错位。这种场景建议改用 <code>backdrop-filter: blur(2px) 替代纯色遮罩,视觉容错更高。

前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!

相关文章

HTML速学教程(入门课程)
HTML速学教程(入门课程)

HTML怎么学习?HTML怎么入门?HTML在哪学?HTML怎么学才快?不用担心,这里为大家提供了HTML速学教程(入门课程),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
css
css

css是层叠样式表,用来表现HTML或XML等文件样式的计算机语言,不仅可以静态地修饰网页,还可以配合各种脚本语言动态地对网页各元素进行格式化。php中文网还为大家带来html的相关下载资源、相关课程以及相关文章等内容,供大家免费下载使用。

2023.06.15

3876

6

css居中
css居中

css居中:1、通过“margin: 0 auto; text-align: center”实现水平居中;2、通过“display:flex”实现水平居中;3、通过“display:table-cell”和“margin-left”实现居中。本专题为大家提供css居中的相关的文章、下载、课程内容,供大家免费下载体验。

2023.07.27

857

5

css如何插入图片
css如何插入图片

cssCSS是层叠样式表(Cascading Style Sheets)的缩写。它是一种用于描述网页或应用程序外观和样式的标记语言。CSS可以控制网页的字体、颜色、布局、大小、背景、边框等方面,使得网页的外观更加美观和易于阅读。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

2023.07.28

1718

6

css超出显示...
css超出显示...

在CSS中,当文本内容超出容器的宽度或高度时,可以使用省略号来表示被隐藏的文本内容。本专题为大家提供css超出显示...的相关文章,相关教程,供大家免费体验。

2023.08.01

3106

7

css字体颜色
css字体颜色

CSS中,字体颜色可以通过属性color来设置,用于控制文本的前景色,字体颜色在网页设计中起到很重要的作用,具有以下表现作用:1、提升可读性;2、强调重点信息;3、营造氛围和美感;4、用于呈现品牌标识或与品牌形象相符的风格。

2023.08.10

6045

11

什么是css
什么是css

CSS是层叠样式表(Cascading Style Sheets)的缩写,是一种用于描述网页(或其他基于 XML 的文档)样式与布局的标记语言,CSS的作用和意义如下:1、分离样式和内容;2、页面加载速度优化;3、实现响应式设计;4、确保整个网站的风格和样式保持统一。

2023.08.10

5151

7

css三角形怎么写
css三角形怎么写

CSS可以通过多种方式实现三角形形状,本专题为大家提供css三角形怎么写的相关教程,大家可以免费体验。

2023.08.21

1797

9

css设置文字颜色
css设置文字颜色

CSS(层叠样式表)可以用于设置文字颜色,这样做有以下好处和优势:1、增加网页的可视化效果;2、突出显示某些重要的信息或关键字;3、增强品牌识别度;4、提高网页的可访问性;5、引起不同的情感共鸣。

2023.08.22

2451

5

css禁止点击事件
css禁止点击事件

实现css禁止点击事件的方法有使用CSS的pointer-events属性和使用JavaScript禁用点击事件。本专题为大家提供点击事件相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.23

2093

5

热门下载

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

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
CSS动画实用技巧视频教程
CSS动画实用技巧视频教程

共11课时 | 2.7万人学习

Sass 教程
Sass 教程

共14课时 | 1.5万人学习

Bootstrap 5教程
Bootstrap 5教程

共46课时 | 5.6万人学习