html - 如何在 bootstrap 5 表格单元格中垂直对齐文本?

标签 html css twitter-bootstrap bootstrap-5

我创建了一个表格,我希望其中一个单元格具有垂直对齐方式。 Bootstrap 5 文档 states :

Change the alignment of elements with the vertical-alignment utilities. Please note that vertical-align only affects inline, inline-block, inline-table, and table cell elements


我只是做了一个小比较表,以展示我的困惑:

<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>

那么为什么第一个表格没有像第二个表格那样垂直正确对齐的文本呢?
我还尝试添加一个 flexbox :<div class="d-flex align-items-center">...</div> .结果相同。我需要 class="row"在我的tr因为表格元素的水平对齐。我怎样才能在我的第一个单元格中获得垂直对齐的元素?

最佳答案

我假设您的意思是水平居中和垂直居中,对吗?
正如评论中已经指出的那样,将表格与 Bootstrap 的 row 混合使用类导致对齐元素的问题。
但是,如果 如果您想保持当前布局不变,可以使用 display: contents在具有类 row 的元素上.这使得子元素的位置相对于元素的父元素。在文档中阅读更多信息 here .
您修改后的代码段:

tr.row {
  display: contents
}
<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">now 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>

关于html - 如何在 bootstrap 5 表格单元格中垂直对齐文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70886870/

相关文章:

html - XSLT 无法使用 xs :output 添加 DOCTYPE

javascript - Bootstrap 4 警告框关闭按钮未对齐

html - 为什么我的其他导航链接会影响带有下拉菜单的链接?

javascript - Bootstrap 3 和 Typeahead,如何将 JSON 数据放入下拉列表中

php - 是否可以将 Bootstrap 字形图标放入 {{ Form::submit (' ' )}} - Laravel

php - 滚动到 wordpress 设计的网站中的一个点

javascript - 清除搜索字段后,如何将 <div> 重置回 AJAX 响应之前的状态?

html - Bootstrap : move navbar under the logo bar

html - 更大的标志而不影响导航栏中的其他元素

php - 我的 php 表单不工作,即不向我的页面发送数据