本文详解如何利用 Bootstrap 的 Flexbox 工具类(如 d-flex、align-items-center、justify-content-center)精准实现表格在父级 div 中的垂直(及水平)居中,替代失效的 vertical-align: middle,并给出可直接运行的结构化代码示例。
本文详解如何利用 bootstrap 的 flexbox 工具类(如 `d-flex`、`align-items-center`、`justify-content-center`)精准实现表格在父级 div 中的垂直(及水平)居中,替代失效的 `vertical-align: middle`,并给出可直接运行的结构化代码示例。
在 Web 开发中,初学者常误以为 vertical-align: middle 可用于块级元素(如 <div> 或 <table>)的垂直居中——但该属性仅对 行内元素(inline)或 表格单元格(table-cell)生效,对普通 div 容器无效。当你希望将一个 <table> 在其父 <div> 中真正垂直居中时,推荐采用现代 CSS 布局方案:Flexbox,而 Bootstrap 4/5 已内置完善的响应式 Flex 工具类,无需额外写 CSS。
核心思路是:将承载表格的容器设为 Flex 容器,并启用主轴(垂直方向)和交叉轴(水平方向)的居中对齐:
以下为优化后的完整结构示例(已适配 Angular + Bootstrap):
<div class="col-12 d-flex"> <div class="col-6 text-center default_color" style="padding-top: 5rem;"> <div class="row"> <div class="col-12" *ngIf="!incompleteDataForTables"> <b style="color: var(--select-bg-color);"> Variación entre semanas sites </b> <!-- 关键:新增 flex 容器,显式设定高度 --> <div class="col-12 d-flex align-items-center justify-content-center" style="min-height: 300px; background-color: #f8f9fa;"> <div class="table-responsive m-2 p-1" style="width: 100%;"> <table id="data_week_comp_3500" class="table table-bordered table-sm mb-0"> <thead class="table-light"> <tr> <th scope="col">Semana</th> <th scope="col">Sitio</th> <th scope="col">Variación (%)</th> </tr> </thead> <tbody> <tr><td>Semana 1</td><td>Site A</td><td>+2.4</td></tr> <tr><td>Semana 2</td><td>Site B</td><td>-1.7</td></tr> </tbody> </table> </div> </div> </div> </div> </div></div>
✅ 关键改进说明:
⚠️ 注意事项:
掌握这一模式后,你不仅能居中表格,还可复用至任何块级元素(卡片、表单、图表容器等),是响应式布局中的基础且高频技巧。