【发布时间】:2018-02-03 17:13:15
【问题描述】:
我正在为自己遇到的一个难题而苦苦挣扎。我想要有标签,可以是多行的,以最佳地填充整个宽度。对于哪个 flex: auto 效果很好。但是,对于一些不相关且不可更改的情况,我还拥有带有 flex-wrap: wrap 的容器和一个覆盖选项卡上方整个宽度的单个项目。
使用 flex: auto 和 flex-wrap: wrap flex 项目不再尝试通过包装其内容文本来适应宽度 - 它们都将其放在一行中,如果不适合则换行。
我做了一个小提琴来说明它: https://jsfiddle.net/d67mgqvm/
<div class="flexbox">
<div class="flexitem full">
This is a desired behavior but it has to use a wrapper to prevent wrapping
</div>
<div class="wrapper">
<div class="flexitem">
Content can be different so I have to use flex: auto so it has more space for longer texts
</div>
<div class="flexitem">
Like I said, it can be short like this one
</div>
</div>
</div>
<div class="flexbox">
<div class="flexitem full">
This doesn't work, even though it can fit in all the content if it wraps text inside items
</div>
<div class="flexitem">
Content can be different so I have to use flex: auto so it has more space for longer texts
</div>
<div class="flexitem">
Like I said, it can be short like this one
</div>
</div>
我一直在考虑是否有可能在没有包装器的情况下做到这一点。看起来像 flex-basis: min-content 应该是这样的,但它只适用于 FF...
【问题讨论】:
-
我很困惑,你想达到什么目的?一切都在一条线上还是别的什么?您的小提琴中的代码与您粘贴的代码不匹配,这是您拥有的代码?
-
我创建了一个包含 2 个部分的小提琴。顶部代码的工作方式与我想要的一样,但它有一个额外的包装器。小提琴中的下半部分是我想要尝试改变的部分,以使其表现得像顶部一样,但没有包装标签。
-
为您的弹性商品删除
flex: auto,这不是解决问题吗? -
不,没有 flex: auto 它们都占用相同的空间,我特别写了,因为文本不同,我需要它在所有 flex 项目中最佳地分配宽度。