我想设置一个网格,在台式设备上每行包含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>
答案 0 :(得分:0)
如果您希望当用户调整窗口大小时卡片保持不变,我认为.w-*
是不可能的,因为那是整个行的相对百分比宽度为100%。卡会随着用户调整窗口大小而缩小,除非您允许行上溢出。
出于同样的原因,我不知道为什么/如何想到您可以在台式设备上连续放置3张w-50
卡。您连续可以拥有的w-50
张卡的最大数量仅为2:100%/ 50%= 2。
要使卡片尽可能长地保持相同的宽度,您可能必须使用绝对单位,例如px
或rem
。
<div class="cards">
<div class="card"></div>
<div class="card"></div>
<div class="card"></div>
</div>
这里需要注意,默认情况下<div>
的宽度设置为100%。您可能只需在每张卡上添加边距以使其看起来不错:
.cards .card {
margin-bottom: 1rem;
}
我将更大的设备设为576px。您可以在此处设置媒体断点,并将.cards
显示为flexbox。并为里面的卡设置一个固定的。
@media (min-width: 576px) {
.cards {
display: flex;
flex-flow: row nowrap;
justify-content: space-between;
}
.cards .card {
width: 13rem;
}
}
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/
但是在这种情况下,卡之间仍然没有空隙。