我有一个可以包含一个或多个元素的flex容器。
如果有多个元素,我想用
之间的空格来证明内容的合理性justify-content: space-between;
如果只有一个元素,我希望它居中。
示例codepen
这只能使用CSS吗?
答案 0 :(得分:5)
这是答案
.flex {
display: flex;
justify-content: space-between;
& > *:only-child {
margin: auto;
}
}
答案 1 :(得分:3)
是。 flexbox规范使这成为可能。
.flex {
display: flex;
margin: 1em 0;
padding: 1em;
border: 1px solid red;
justify-content: space-between;
}
a:only-child {
margin: 0 auto;
}
<div class="flex">
<a>item 1</a>
<a>item 2</a>
</div>
<div class="flex">
<a>item 1</a>
</div>
来自规范:
8.1. Aligning with
auto
margins在通过
justify-content
和align-self
进行对齐之前 正空闲空间被分配到该维度的自动边距。
所以,基本上,在父母身上使用justify-content
,在孩子身上使用自动保证金。
根据上述规则,当only-child
选择器适用时,自动边距优先。
答案 2 :(得分:1)
只需将margin: auto
添加到您的商品中即可。希望这是你在寻找的。 p>
.flex {
display: flex;
margin: 1em 0;
padding: 1em;
border: 1px solid red;
justify-content: space-between;
}
a {
margin: auto;
}
<div class="flex">
<a>item 1</a>
<a>item 2</a>
</div>
<div class="flex">
<a>item 1</a>
</div>