html - 以动态宽度居中 div,包含卡片
问题描述
如何使以下元素居中:
<div class="outer">
<div class="inner">
<div class="cards card1">Card 1</div>
<div class="cards card2">Card 2</div>
<div class="cards card3">Card 3</div>
<div class="cards card4">Card 4</div>
</div>
</div>
卡的数量是动态设置的。外部div的宽度也是如此。根据外部 div 的宽度,我想像这样显示它们:
| |
| |Card 1 | |Card 2 | |Card 3| |
| | | | | | | |
| |
| |Card 4 | |
| | | |
| |
| |Card 1 | |Card 2 | |
| | | | | |
| |
| |Card 3 | |Card 4 | |
| | | | | |
| |
| |Card 1 | |Card 2 | |Card 3| |Card 4 | |
| | | | | | | | | |
还有其他类似的问题(Centering a div block without the width),但是它们不处理多行卡片。我尝试过使用以下内容:
.outer {
text-align: center;
}
然而,这使得卡片 4 位于中间而不是左侧。
或者
.outer {
width: 100%;
}
.inner {
display: inline-block;
transform: translateX(-50%);
left: 50%;
}
这有效,但仅当有单行卡片时。当一行中的卡片多于容纳时,它会对齐剩下的所有内容。
解决方案
这是否解决了您正在尝试做的事情?
.outer {
display: flex;
justify-content: center;
}
.inner {
display: flex;
flex-wrap: wrap;
}
.cards {
flex-basis: calc(100% / 3);
}
<div class="outer">
<div class="inner">
<div class="cards card1">Card 1</div>
<div class="cards card2">Card 2</div>
<div class="cards card3">Card 3</div>
<div class="cards card4">Card 4</div>
</div>
</div>
推荐阅读
- apache-spark - Pyspark:在when子句中合并条件
- rust - 如何使用 io::Cursor 和字节序读取混合的二进制/文本文件?
- terraform - Terraform aws_flow_log 未添加 IAM 角色 ARN
- c# - LINQ 加入扁平化结果(SelectMany?)
- python - 在 django 社交媒体网络中创建一个赞按钮
- flutter - 如何在 Flutter 中解析没有数组(映射字符串)的 JSON 对象
- vb6 - 根据其他切换按钮状态更改切换按钮状态
- javascript - 涉及递归函数的迷宫 Javascript 问题
- r - 我如何从fasta文件中分离国家和加入
- python - Python openpyxl库拒绝加载我的excel文档