引导v4卡固定

时间:2019-05-14 18:41:42

标签: responsive-design bootstrap-4

我想设置一个网格,在台式设备上每行包含3张w-50卡,在较小的设备上每行包含一张卡。

但是,如果用户响应地使浏览器窗口变小,我希望这些卡在桌面上保持相同的宽度,并使它们之间的空间变小,而不是卡本身变窄。

此外,台式机的卡号可能是w-50,而小型设备的卡号可能是w-75。

示例代码:

<div class="row">
  <div class="col-sm-12 col-lg-4 " >

    <div class="card w-50 ">

      <div class="card-header">
    Featured
  </div>
      <div class="card-body ">
        <h5 class="card-title">Special title treatment</h5>
        <p class="card-text">With supporting text below as a natural lead-in to additional content.</p>
        <a href="#" class="btn btn-primary">Go somewhere</a>
      </div>

    </div>
  </div>
  <div class="col-sm-12 col-lg-4">
    <div class="card w-50">
      <div class="card-header">
    Featured
  </div>
      <div class="card-body">
        <h5 class="card-title">Special title treatment</h5>
        <p class="card-text">With supporting text below as a natural lead-in to additional content.</p>
        <a href="#" class="btn btn-primary">Go somewhere</a>
      </div>
    </div>
  </div>
   <div class="col-sm-12 col-lg-4 ">
    <div class="card w-50">
      <div class="card-header">
    Featured
  </div>
      <div class="card-body">
        <h5 class="card-title">Special title treatment</h5>
        <p class="card-text">With supporting text below as a natural lead-in to additional content.</p>
        <a href="#" class="btn btn-primary">Go somewhere</a>
      </div>
    </div>
  </div>
</div>

1 个答案:

答案 0 :(得分:0)

简单答案:否

如果您希望当用户调整窗口大小时卡片保持不变,我认为.w-*是不可能的,因为那是整个行的相对百分比宽度为100%。卡会随着用户调整窗口大小而缩小,除非您允许行上溢出

出于同样的原因,我不知道为什么/如何想到您可以在台式设备上连续放置3张w-50卡。您连续可以拥有的w-50张卡的最大数量仅为2:100%/ 50%= 2。

要使卡片尽可能长地保持相同的宽度,您可能必须使用绝对单位,例如pxrem

<div class="cards">
    <div class="card"></div>
    <div class="card"></div>
    <div class="card"></div>
</div>

在较小的设备上,每行一张卡

这里需要注意,默认情况下<div>的宽度设置为100%。您可能只需在每张卡上添加边距以使其看起来不错:

.cards .card {
    margin-bottom: 1rem;
}

enter image description here

在大型设备上,每行3张卡

我将更大的设备设为576px。您可以在此处设置媒体断点,并将.cards显示为flexbox。并为里面的卡设置一个固定的。

@media (min-width: 576px) {
    .cards {
        display: flex;
        flex-flow: row nowrap;
        justify-content: space-between;
    }

    .cards .card {
        width: 13rem;
    }
}

enter image description here

https://jsfiddle.net/davidliang2008/woxsv4nm/24/

如何设置合适的宽度?

但是,设置卡的正确宽度很困难。我的2美分:您可能想为不同的断点设置正确的宽度的卡,以使卡之间的空间不会太大。

如果允许溢出怎么办?

要强制卡的宽度为50%并连续3张,该行必须溢出。默认情况下,如果没有足够的空间,flexbox子代将缩小。要强制使用50%的宽度,您必须通过设置flex-shrink: 0;将其关闭:

@media (min-width: 576px) {
    .cards {
        display: flex;
        flex-flow: row nowrap;
        justify-content: space-between;
    }

    .cards .card {
        width: 50%;
        flex-shrink: 0;
    }
}

https://jsfiddle.net/davidliang2008/woxsv4nm/26/

enter image description here

但是在这种情况下,卡之间仍然没有空隙。