为啥我在 Bootstrap 4 中的 cols flex-grow 没有对齐?

Posted

技术标签:

【中文标题】为啥我在 Bootstrap 4 中的 cols flex-grow 没有对齐?【英文标题】:Why do my cols flex-grow in Bootstrap 4 are not aligned?为什么我在 Bootstrap 4 中的 cols flex-grow 没有对齐? 【发布时间】:2020-01-29 22:45:26 【问题描述】:

使用 Bootstrap 4,我希望我的列在多行中对齐。

如果我设置行和列,它工作得很好,但如果我的一个列需要用flex-grow:2 安装 2 个插槽,它会在行之间产生一点间隙。我尝试了所有 flex 的东西都没有成功。

在这里你可以有链接来尝试它。我创建了 2 个案例,一个带有 div,另一个(我关心的那个)带有一个带有行类的表。

Link on w3schools

  .col  
     border:1px solid red;
  
<!DOCTYPE html>
<html lang="en">
<head>
  <title>Bootstrap Example</title>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">
  <script src="https://code.jquery.com/jquery-3.2.1.slim.min.js" integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN" crossorigin="anonymous"></script>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js" integrity="sha384-ApNbgh9B+Y1QKtv3Rn7W3mgPxhU9K/ScQsAP7hUibX39j7fakFPskvXusvfa0b4Q" crossorigin="anonymous"></script>
  <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js" integrity="sha384-JZR6Spejh4U02d8jOt6vLEHfe/JQGiRRSQQxSfFWpi1MquVdAyjUar5+76PVCmYl" crossorigin="anonymous"></script>

</head>
<body>
<div class="container"> 
  <div class="row">
    <div class="col" style="flex-grow:2.08">1</div>
    <div class="col">2</div>
  </div>
  <div class="row">
    <div class="col">1</div>
    <div class="col">2</div>
    <div class="col">3</div>
  </div>
</div>
<br/>
<div class="container">        
  <table class="table">
    <thead>
      <tr class="row">
        <th class="col">Firstname</th>
        <th class="col">Lastname</th>
        <th class="col">Email</th>
      </tr>
    </thead>
    <tbody>
      <tr class="row">
        <td class="col" style="flex-grow:2">John (2.07 in flex-grow works in 1080p...)</td>
        <td class="d-none">Doe</td>
        <td class="col">john@example.com</td>
      </tr>
      <tr class="row">
        <td class="col">Mary</td>
        <td class="col">Moe</td>
        <td class="col">mary@example.com</td>
      </tr>
      <tr class="row">
        <td class="col">July</td>
        <td class="col">Dooley</td>
        <td class="col">july@example.com</td>
      </tr>
    </tbody>
  </table>
</div>
</body>
</html>

在第一个示例中,您可以看到“1”/“2”和“2”/“3”之间有一点差距,在第二个示例中也是如此。

我真的需要使用 flex-grow,因为在我的完整代码中,我的一些 TD 在 PX 中具有固定宽度,而其他 TD 需要适应空白空间但宽度相同(如果我设置了 flex-grow,则需要两倍: 2)

【问题讨论】:

请将您的代码发布到问题中,而不是站外链接。如果该链接都消失了,那么这个问题对未来的访问者将毫无用处。请阅读:How to create a Minimal, Complete, and Verifiable example 【参考方案1】:

W3 学校似乎也注意到了一个问题,因此他们的“2.07 in flex-grow...”。

我不确定为什么会发生这种情况,但一种解决方法是向这些 td 添加一个类,然后在不同的屏幕尺寸下为该类添加媒体查询。

例如:

@media screen and (min-width: 992px)  
    .alter-flex
        flex-grow: 2.09;
    
 

【讨论】:

以上是关于为啥我在 Bootstrap 4 中的 cols flex-grow 没有对齐?的主要内容,如果未能解决你的问题,请参考以下文章

Bootstrap 4 中的列排序,带有推/拉和 col-md-12

Bootstrap 3、col 和 col-# 类

如何将 Bootstrap 4 中的 SVG 垂直对齐到行高?

为啥 Bootstrap 不允许我在 ASP.NET MVC 页面中的下拉菜单上设置边距?

Bootstrap 4 网格 - .col-breakpoint 与 .col-number

为啥在 col-auto 内具有多列的嵌套行的大小大于内容宽度?