【发布时间】:2020-01-17 14:09:14
【问题描述】:
我需要将一组孩子放在一个容器中。
我的要求是:
- 每个孩子的左右都需要一个排水沟。
- 我无法在容器上设置边距或填充。
- 我无法为子项设置内边距,但我可以设置边距。
- 每个孩子的左右都应该有一个空间/排水沟。
- 每个孩子可以有不同的最大宽度集。
- 如果孩子的最大宽度大于容器宽度,它应该占据整个宽度(减去它的间距)。
- 如果子元素比容器窄,它应该居中。
我认为我可以使用 flexbox 实现这一点,因为
align-items: stretch;尊重最大宽度,但它不会使孩子居中。
我不能使用margin: 0 auto;,因为我需要使用孩子们的边距来设置他们左右的排水沟。
这是我使用 flexbox 的尝试:
* {
box-sizing: border-box;
}
main {
display: flex;
flex-direction: column;
align-items: stretch;
text-align: center;
max-width: 600px;
outline: 1px dashed black;
box-
}
section {
min-height: 40px;
margin-left: 20px;
margin-right: 20px;
}
section + section {
margin-top: 20px;
}
.s1 {
background-color: red;
max-width: 100px
}
.s2 {
background-color: blue;
max-width: 200px
}
.s3 {
background-color: green;
max-width: 300px
}
<main>
<section class='s1'></section>
<section class='s2'></section>
<section class='s3'></section>
</main>
有什么方法可以可靠地实现我的目标吗?
【问题讨论】:
标签: css layout flexbox constraints