【发布时间】:2022-01-28 19:50:51
【问题描述】:
我创建了一个表格,我希望其中一个单元格垂直对齐。 bootstrap 5 文档states:
使用vertical-alignment改变元素的对齐方式 公用事业。请注意,垂直对齐只影响内联, inline-block、inline-table、和表格单元格元素
我只是做了一个小比较表,来展示我的混乱:
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"/>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<table class="table table-dark">
<tbody id="table">
<tr class="row">
<td class="col-sm-2 align-middle">not aligned</td>
<td class="col-sm-1">
<button>
<div class="row">
<img src="https://upload.wikimedia.org/wikipedia/commons/thumb/e/e3/Flag_of_Papua_New_Guinea.svg/320px-Flag_of_Papua_New_Guinea.svg.png" width="64px" height="48px">
</div>
</button>
</td>
<td class="col-sm-9" colspan="9"></td>
</tr>
</tbody>
</table>
<table class="table table-dark">
<tbody>
<tr>
<td class="col-sm-2 align-middle">aligned</td>
<td class="col-sm-1">
<button>
<div class="row">
<img src="https://upload.wikimedia.org/wikipedia/commons/thumb/e/e3/Flag_of_Papua_New_Guinea.svg/320px-Flag_of_Papua_New_Guinea.svg.png" width="64px" height="48px">
</div>
</button>
</td>
<td class="col-sm-9" colspan="9"></td>
</tr>
</tbody>
</table>
那么为什么第一个表格没有像第二个表格那样垂直对齐的文本呢?
我还尝试添加一个弹性框:<div class="d-flex align-items-center">...</div>。结果相同。由于表格元素的水平对齐,我需要class="row" 在我的tr 中。如何在我的第一个单元格中仍然获得垂直对齐的项目?
【问题讨论】:
-
我猜是因为您在
<tr>上设置了row类。这会将<tr>设置为display: flex,这会导致其子表单元格的行为与display: block一样。类align-middle设置vertical-align: middle,它只适用于display: inline或display: table-cell的元素。 (Bootstrap 的row类与表无关。) -
你说你需要
row类来进行水平对齐,但它似乎也搞砸了。 -
您是否尝试将
align-items-center添加到您的tr元素中? -
@dalelandry 这实际上正确对齐了单元格的文本,但背景现在仅在文本区域中。我想我需要一个
<td>广泛的解决方案。
标签: html css twitter-bootstrap bootstrap-5