【发布时间】:2020-11-14 02:40:48
【问题描述】:
我正在尝试创建一个在项目之间具有灵活间距的水平导航菜单。 Flexbox 似乎是合适的选择,但我无法让它按我的预期工作。
要求是:
- 如果有足够的可用空间,则在每个项目之间留出 4rems 的空间
- 随着视口宽度的减小,均匀地缩小项目之间的空间,最小为 2rem
- 如果视口宽度进一步减小,则保持 2rem 间距并缩小项目本身
我希望它能够容纳可变数量的项目(会有一个最大值)。
我得到的最接近的方法是在项目上使用 2rem 填充,然后使项目本身成为弹性容器,并缩小伪元素,但缩小非常不均匀。
HTML
<div class="container">
<div class="item">
Item 1
</div>
<div class="item">
Item 2
</div>
<div class="item">
Item 3 With Long Name
</div>
<div class="item">
Item4WithLongNameNoSpaces
</div>
<div class="item">
Item 5
</div>
</div>
CSS
.container {
display: flex;
}
.item + .item {
display: flex;
padding-left: 2rem;
}
.item + .item:before {
content: "";
display: block;
width: 2rem;
flex-shrink: 1000;
}
Codepen:https://codepen.io/qubaji/pen/PoZLEbW
如果我能找到 flex-grow/flex-shrink 值的正确组合,似乎 flexbox 可以做到这一点,但我不能完全做到。非常感谢任何帮助!
【问题讨论】:
-
@MrT 那是我最初的尝试,但是这对项目之间的空间没有上限,而我希望它有一个最大值 编辑:哦,你删除了关于
justify-content: space-between的评论,但我'会在这里留下我的回复,以防其他人有同样的问题 -
是的,对不起,没想到你会这么快拿起它:)
-
这是一个好问题,我可能会尝试 justify-content: space-evenly 或 space-between 并在您的项目之间放置 max-width: 2rem 的空 div。有时使用空 div 作为间隔是一个非常有用的解决方案
-
@Warden330
justify-content: space-evenly和space-between不符合要求,但间隔 div 是一个很好的选择