Bootstrap 3网格列的高度相同

Posted

技术标签:

【中文标题】Bootstrap 3网格列的高度相同【英文标题】:Same height for Bootstrap 3 grid columns 【发布时间】:2016-09-21 22:43:29 【问题描述】:

我有什么

我有一些不同高度的 Bootstrap 3 Grid 列:

<div class="row">
  <div class="col-xs-4">Item 1</div>
  <div class="col-xs-4">Item 2 <br/> additional line
  </div>
  <div class="col-xs-4">Item 3</div>
  <div class="col-xs-6">Item 4 - This should be on a separate line</div>
</div>

看起来像这样:

我想要什么

我想向.row 添加一个额外的类(例如.row-aligned),以实现所有并排的“列”具有相同的高度。

应该是这样的:

我的尝试

因为我不需要支持旧浏览器,所以我可以使用 flexbox。 我的尝试很简单,适用于所有浏览器,但不适用于 Safari(9.1 版,Mac OSX 10.10):

.aligned-row 
  display: flex;
  flex-flow: row wrap;

I prepared a Demo here.

Safari 错误

正如我所说,Safari 无法处理这种 flexbox 样式,结果如下所示:

(我发现添加margin-left: -1px 似乎可以解决问题,但这不是一个好的解决方案,因为它会将所有内容向左移动 1 个像素,从而可以隐藏边框或其他内容。)

我的问题

您知道如何在 Safari 中修复此错误吗?还是我用错了flexbox?或者不使用 flexbox 有没有更好的解决方案?

【问题讨论】:

你看到这个问题和所有不同的答案了吗? ***.com/questions/19695784/… 是的,我确实看到了这个问题,但没有 flexbox 解决方案在 Safari 中有效,其他解决方案也不好。而且我也不想用 javascript 来解决这个问题。我发布了这个单独的问题,因为我更想了解为什么 flexbox 在 Safari 中不起作用。 可能重复:***.com/questions/34250282/… 【参考方案1】:

解决方案是“删除”设置为.row::beforedisplay: table

.aligned-row 
    display: flex;
    flex-flow: row wrap;

    &::before 
        display: block;
    

Demo

【讨论】:

【参考方案2】:

row 添加一个类 display-flex,如下所示:

<div class="row display-flex">

然后添加这个 CSS 代码。

.row.display-flex 
  display: flex;
  flex-wrap: wrap;


:)
.row.display-flex > [class*='col-'] 
  display: flex;
  flex-direction: column;

【讨论】:

以上是关于Bootstrap 3网格列的高度相同的主要内容,如果未能解决你的问题,请参考以下文章

Bootstrap 3 Grid如何使嵌套列的高度与最大的列相同

使用 flexbox 网格的 Bootstrap 4 砌体布局

如何使 Bootstrap 4 列的高度都相同? [复制]

Bootstrap中一行中所有列的高度相同

将一排图像保持在相同的高度

Bootstrap 网格系统 - 如何使两列高度相等? [复制]