使用bootstrap 4.3.1 时如何将卡片栏置于页面中央?

How to place card-columns in the center of the page when using bootstrap 4.3.1?

我试图在嵌套卡片时将 card-columns with Bootstrap 4.3.1 水平居中。

这是我的卡片嵌套方式

 > Main Card
   >> Card-columns
      >>> Card 1  
      >>> Card 2     
      >>> Card 3 
      >>> Card N

我尝试将 mx-auto class 放在主卡片和卡片栏上,但没有将卡片栏放在页面的中央。

这是我的代码

<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js" integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1" crossorigin="anonymous"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous"></script>



    <main role="main">
        <div class="container-fluid">
            
          <div class="mx-auto card bg-light">
              <div class="card-body">
                  <h2 class="card-title text-center text-uppercase text-info">Cards</h2>
                  <hr />

                    <div class="card-columns mx-auto">

                        <div class="card text-center">
                          <div class="card-body">
                            <h5 class="card-title">Card 1</h5>
                            <p class="card-text">This card has a regular title and short paragraphy of text below it.</p>
                            <p class="card-text"><small class="text-muted">Last updated 3 mins ago</small></p>
                          </div>
                        </div>

                        <div class="card text-center">
                          <div class="card-body">
                            <h5 class="card-title">Card 2</h5>
                            <p class="card-text">This card has a regular title and short paragraphy of text below it.</p>
                            <p class="card-text"><small class="text-muted">Last updated 3 mins ago</small></p>
                          </div>
                        </div>
                        
                    </div>

              </div>
          </div>

        </div>
    </main>

我创建了 a fiddler 来演示我到目前为止所做的事情。

如何将卡片栏正确放置在屏幕中央?

您需要将您的 容器 div 设置为 flex-box 然后您可以应用您需要的 bootstrap classes .

在这种情况下,您需要:
<div class="card-columns mx-auto d-flex justify-content-center col-12">

所以因为您想将 card-columns 居中,所以显然 justify-content-center 可以完成这项工作。 对于您的 card-columns 宽度,您可以使用 bootstrap 中的 class col。基本上,它提供了最多 12 列的网格,这将占据整个页面的视图。现在你可以通过添加 col-[0 to 12] 到最多 12 来告诉每张卡片你需要他们采取多少 col-span 因为你已经设置了他们的父标签 col-12

如果有col-8,您的卡片最多只能占用 8 列。

<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js" integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1" crossorigin="anonymous"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous"></script>
<main role="main">



  <div class="container-fluid">
    <div class="mx-auto card bg-light">
      <div class="card-body">
        <h2 class="card-title text-center text-uppercase text-info">Cards</h2>
        <hr />

        <div class="card-columns mx-auto d-flex justify-content-center col-12">



          <div class="card text-center col-4">
            <div class="card-body">
              <h5 class="card-title">Card 1</h5>
              <p class="card-text">This card has a regular title and short paragraphy of text below it.</p>
              <p class="card-text"><small class="text-muted">Last updated 3 mins ago</small></p>
            </div>
          </div>

          <div class="card text-center col-4">
            <div class="card-body">
              <h5 class="card-title">Card 2</h5>
              <p class="card-text">This card has a regular title and short paragraphy of text below it.</p>
              <p class="card-text"><small class="text-muted">Last updated 3 mins ago</small></p>
            </div>
          </div>



        </div>
      </div>
    </div>
  </div>
</main>

card-colums 删除嵌套卡片的 flexbox。它变成了 inline-block,您必须将您的卡片与其他技巧对齐。

https://getbootstrap.com/docs/4.3/components/card/#card-columns

你可以做的是使用 card-deck,此时你可以输入 mx-5 而不是自动。这样每张卡片将占据剩余宽度的 50%。 mx-auto 在这种情况下不起作用,因为卡片将占据整个宽度,将其一分为二,mx-auto 将寻找剩余的宽度并在每一侧应用边距。在这种情况下,卡片将各占 50%,因此没有 space 留给 mx-auto

在嵌套元素获得各自的宽度之前应用 mx-5 或从 0 到 5 的任何值。

您也可以使用 card-deck align-items-center 并定义每辆车的宽度。

最后,问题是你想同时使用inline-block和flex,但你需要做出选择。