如何使 2 列 Bootstrap 网格中的第 2 列与第 1 列的高度相同

Posted

技术标签:

【中文标题】如何使 2 列 Bootstrap 网格中的第 2 列与第 1 列的高度相同【英文标题】:How to make the 2nd column in a 2 column Bootstrap grid the same height as the 1st column 【发布时间】:2016-01-06 17:26:50 【问题描述】:

我创建了一个 1 行 2 列的 Bootstrap 网格。第一列包含一个宽度为 100% 的 img。因此,当浏览器窗口宽度变大或变小时(这是我想要的)时,行高会发生变化。

第二列包含一个div 和一段文字。我希望第二列中的div 与第一列中的div(图像)具有相同的高度。第二列中的文本水平和垂直居中。

但目前这是我的 Bootstrap 网格使用以下 html 和 CSS 的样子:

HTML

<!DOCTYPE html>
<html>
    <head>
        <link rel="stylesheet" type="text/css" href="css/styles.css" media="all">
        <link rel="stylesheet" type="text/css" href="css/bootstrap.css" media="all">
        <script type="text/javascript" src="js/jquery-1.11.3.js"></script>
        <script type="text/javascript" src="js/bootstrap.js"></script>
    </head>
    <body>
        <div class="container" style="padding-top: 20px;">
            <div class="row">
                <div class="col-xs-8 left-column">
                    <img  src="images/beach.jpg">
                </div>
                <div class="col-xs-4 right-column">
                    <p>Lots of sand on the beach</p>
                </div>
            </div>
        </div>
    </body>
</html>

CSS

.left-column img 
    width: 100%;


.right-column 
    background-color: red;

.right-column p 
    text-align: center;
    vertical-align: middle;

如您所见,第二列中的div 与第一列中的div(图片)的高度不同。

下面是我想要实现的目标的图像

谁能告诉我如何使第二列中的div(右列)与第一列中的div(图像)具有相同的高度(即使浏览器窗口的宽度为调整大小)。

【问题讨论】:

【参考方案1】:

这是一个可以使用的sn-p:

/* 
TRICK FOR SAME COLUMN HEIGHT USING BOOTSTRAP 3

USAGE EXAMPLE:
<div class="row">
  <div class="row-height">
    <div class="col-xs-2 col-xs-height col-xs-middle">
      <div class="inside"></div>
    </div>
    <div class="col-xs-4 col-lg-5 col-xs-height col-xs-middle">
      <div class="inside"></div>
    </div>
  </div>
</div>
*/

/* columns of same height styles */

.row-height 
  display: table;
  table-layout: fixed;
  height: 100%;
  width: 100%;

.col-height 
  display: table-cell;
  float: none;
  height: 100%;

.col-top 
  vertical-align: top;

.col-middle 
  vertical-align: middle;

.col-bottom 
  vertical-align: bottom;


@media (min-width: 480px) 
  .row-xs-height 
    display: table;
    table-layout: fixed;
    height: 100%;
    width: 100%;
  
  .col-xs-height 
    display: table-cell;
    float: none;
    height: 100%;
  
  .col-xs-top 
    vertical-align: top;
  
  .col-xs-middle 
    vertical-align: middle;
  
  .col-xs-bottom 
    vertical-align: bottom;
  


@media (min-width: 768px) 
  .row-sm-height 
    display: table;
    table-layout: fixed;
    height: 100%;
    width: 100%;
  
  .col-sm-height 
    display: table-cell;
    float: none;
    height: 100%;
  
  .col-sm-top 
    vertical-align: top;
  
  .col-sm-middle 
    vertical-align: middle;
  
  .col-sm-bottom 
    vertical-align: bottom;
  


@media (min-width: 992px) 
  .row-md-height 
    display: table;
    table-layout: fixed;
    height: 100%;
    width: 100%;
  
  .col-md-height 
    display: table-cell;
    float: none;
    height: 100%;
  
  .col-md-top 
    vertical-align: top;
  
  .col-md-middle 
    vertical-align: middle;
  
  .col-md-bottom 
    vertical-align: bottom;
  


@media (min-width: 1200px) 
  .row-lg-height 
    display: table;
    table-layout: fixed;
    height: 100%;
    width: 100%;
  
  .col-lg-height 
    display: table-cell;
    float: none;
    height: 100%;
  
  .col-lg-top 
    vertical-align: top;
  
  .col-lg-middle 
    vertical-align: middle;
  
  .col-lg-bottom 
    vertical-align: bottom;
  

演示: http://codepen.io/Himechi90/pen/MaoEWg

祝你好运!

【讨论】:

【参考方案2】:

row-eq-height 类在你想要的列上是一样的。更多内容:http://getbootstrap.com.vn/examples/equal-height-columns/

只要确保您只需要支持支持 Flex-Box 的浏览器即可。

【讨论】:

酷。很好很简单。谢谢

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

如何在 Bootstrap 3 网格系统中调整装订线?

如何在 Bootstrap 网格中制作列(而不是堆叠)?

如何让 Bootstrap 四列网格在第二列上跨两行?

Bootstrap 4网格不尊重列方向的col-*

Bootstrap 使所有列等于最大 col-auto 宽度

bootstrap 网格中的动态列排列(bootstrap+vanilla js)