css - Card-Columns 最低卡数
问题描述
我正在使用媒体查询来响应地显示卡片列。但是,在开始填充下一列(从左到右)之前,每列中似乎至少有 2 张卡片。
如果没有至少 (2*columns - 1) 个卡片要显示,这会导致空白列。
有解决方法吗?我希望在填充第二行之前填充所有列。
https://codepen.io/Vgoose/pen/wjgKPP
<div class="card-columns">
<div class="card">
<img class="card-img-top img-fluid" src="..." alt="Card image cap">
</div>
<div class="card">
<img class="card-img-top img-fluid" src="..." alt="Card image cap">
</div>
<div class="card">
<img class="card-img-top img-fluid" src="..." alt="Card image cap">
</div>
<div class="card">
<img class="card-img-top img-fluid" src="..." alt="Card image cap">
</div>
<div class="card">
<img class="card-img-top img-fluid" src="..." alt="Card image cap">
</div>
</div>
造型:
.card-columns {
column-count: 1;
}
}
@media screen and (min-width: 576px) {
div.card-columns {
column-count: 2;
}
}
@media screen and (min-width: 768px) {
div.card-columns {
column-count: 3;
}
}
@media screen and (min-width: 992px) {
div.card-columns {
column-count: 4;
}
}
解决方案
恐怕这columns-count
不适合这种情况,因为首先填充列的整个高度。基本上它是为文本列创建的。这就是为什么它对你不起作用的原因——如果你增加.card-column
height 的值,分割.cards
会更加不平衡。
在这种情况下,我建议.card
在不同的窗口宽度.card
上处理宽度,display: inline-block
例如(最简单的一个)。
.card-columns {
/* display: flex;
flex-wrap: wrap;
justify-content: flex-start; */
border: 1px solid #f00;
font-size: 0;
}
.card {
width: 100%;
display: inline-block;
border: 1px solid #000;
box-sizing: border-box;
font-size: 16px;
}
@media screen and (min-width: 576px) {
.card {
width: 50%;
}
}
@media screen and (min-width: 768px) {
.card {
width: 33.33%
}
}
@media screen and (min-width: 992px) {
.card {
width: 25%;
}
}
<div class="card-columns">
<div class="card">
<img class="card-img-top img-fluid" src="..." alt="Card image cap">
</div>
<div class="card">
<img class="card-img-top img-fluid" src="..." alt="Card image cap">
</div>
<div class="card">
<img class="card-img-top img-fluid" src="..." alt="Card image cap">
</div>
<div class="card">
<img class="card-img-top img-fluid" src="..." alt="Card image cap">
</div>
<div class="card">
<img class="card-img-top img-fluid" src="..." alt="Card image cap">
</div>
</div>
当然,还有很多其他的选择,比如 flex 或 css grid,这完全取决于你的目标是什么。
推荐阅读
- delphi - 使用已加载的文本独立更改 RichEdit 文本颜色
- javascript - 与 iframe 和/或弹出窗口共享 WebGL 上下文
- sql - 使用 BIGINT(大数)的 MSAccess 子窗体
- javascript - 正则表达式可以匹配并返回部分文本,同时删除其余部分以使特定于性别的文本成为可能
- ruby-on-rails - Rails不可能以嵌套形式动态添加另一个输入字段(两级)关联有很多通过
- c - 在C中将char数组写入文件时出现分段错误
- django-queryset - Django过滤查询集__in仅用于列表中的项目
- codeeffects - 从 v5.0.14.6 升级到 v5.0.19.4 后 RuleEditor.GetClientSettings() 在泛型方法上抛出 NRE
- azureservicebus - 如何在 Azure 服务总线中创建错误以进行测试?
- sql - Postgres 权限问题