You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Bootstrap 4的card-deck中设置每行卡片数量

如何在Bootstrap的card-deck中设置每行显示2张卡片

嘿,我之前也折腾过这个问题!Bootstrap的card-deck默认是靠弹性布局自动分配卡片宽度的,会尽可能在一行塞下更多卡片,但要固定每行2张的话,有两个实用方案,我给你详细说下:

方案一:用Bootstrap网格系统(推荐)

这是最贴合Bootstrap设计思路的做法,用网格的列来精确控制每行的卡片数量,还能轻松实现响应式效果:

<div class="container">
  <div class="row">
    <!-- 中等屏幕及以上每行2张,小屏幕自动堆叠成1张 -->
    <div class="col-md-6 mb-4">
      <div class="card h-100">
        <div class="card-body">
          <h5 class="card-title">Card title</h5>
          <p class="card-text">Card text</p>
        </div>
        <div class="card-footer">
          <small class="text-muted">Card footer text</small>
        </div>
      </div>
    </div>
    <div class="col-md-6 mb-4">
      <div class="card h-100">
        <div class="card-body">
          <h5 class="card-title">Card title</h5>
          <p class="card-text">Card text</p>
        </div>
        <div class="card-footer">
          <small class="text-muted">Card footer text</small>
        </div>
      </div>
    </div>
    <div class="col-md-6 mb-4">
      <div class="card h-100">
        <div class="card-body">
          <h5 class="card-title">Card title</h5>
          <p class="card-text">Card text</p>
        </div>
        <div class="card-footer">
          <small class="text-muted">Card footer text</small>
        </div>
      </div>
    </div>
    <div class="col-md-6 mb-4">
      <div class="card h-100">
        <div class="card-body">
          <h5 class="card-title">Card title</h5>
          <p class="card-text">Card text</p>
        </div>
        <div class="card-footer">
          <small class="text-muted">Card footer text</small>
        </div>
      </div>
    </div>
  </div>
</div>
  • col-md-6:表示在屏幕宽度≥768px时,每张卡片占该行50%的宽度,也就是每行2张;小于这个宽度时,卡片会自动占满整行,变成每行1张,完美适配移动端。
  • h-100:强制卡片高度一致,避免内容多少导致的卡片参差不齐。
  • mb-4:给每个卡片添加底部间距,让布局更透气。

方案二:自定义CSS修改card-deck(适合不想改动原有HTML结构的情况)

如果你不想调整现有的card-deck结构,也可以通过自定义CSS强制设置每张卡片的宽度,从而控制每行数量:

先保留你原来的HTML结构,然后添加以下CSS:

/* 针对中等屏幕及以上设置每行2张 */
@media (min-width: 576px) {
  .card-deck .card {
    flex: 0 0 50%; /* 固定卡片宽度为容器的50% */
    max-width: 50%;
  }
}

这个方法直接修改card-deck的弹性布局属性,让每张卡片占50%宽度,从而实现每行2张。不过要注意,你需要自己根据需求调整响应式断点(比如min-width的值),不如网格系统灵活,但胜在不用改HTML。

简单说下为什么默认的card-deck做不到:它的flex-basis是auto,会根据容器宽度自动调整卡片的宽度和数量,所以必须手动强制设置宽度才能固定每行的卡片数。

内容的提问来源于stack exchange,提问作者profiler

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 06:45:14