如何使具有flex-grow: 1;
not的flex项(本例中为article
)溢出其flex父项/容器(main
)?
在本例中,article
只是文本,尽管它可能包含其他元素(table
s等)。
main, aside, article {
margin: 10px;
border: solid 1px #000;
border-bottom: 0;
height: 50px;
}
main {
display: flex;
}
aside {
flex: 0 0 200px;
}
article {
flex: 1 0 auto;
}
<main>
<aside>x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x </aside>
<article>don't let flex item overflow container.... y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y </article>
</main>
9条答案
按热度按时间fkaflof61#
对我来说,简单地将
min-width: 0;
添加到溢出的div中就可以防止溢出:灵活上下文中的
min-width
:默认的min-width
值为0
(零),而对于弹性物料,则为auto
。这会使块元素占用比所需空间多得多的空间,从而导致溢出。min-width
被定义为战胜竞争的width
和max-width
,这意味着一旦元素的宽度缩小到其隐式自动宽度以下,min-width:auto
就会起作用并阻止元素缩小。现在解决办法很明显:
min-width: 0
它告诉浏览器该元素无权占用任何最小宽度,现在它将被正确呈现,只占用可用的宽度。
关于
flex-shrink
的注意事项:虽然flex-shrink听起来似乎在这里有帮助,但实际上没有。所描述的问题是关于基于元素内容的元素大小调整,而flex-shrink定义了相对于同一上下文中其他flex元素的收缩。Sourcefjnneemd2#
您的弹性项目具有
这意味着:
<aside>
的起始宽度为200px
。它就不会变大也不会变小。
<article>
将从内容给定的宽度开始。然后,如果有可用的空间,它将增长以覆盖它。
否则它不会缩水。
要防止水平溢出,您可以:
flex-basis: 0
,然后让它们以正flex-grow
增长。flex-shrink
来缩小它们。要防止垂直溢出,您可以
min-height
而不是height
,以允许灵活项目在必要时增长更多overflow
overflow
例如,
x一个一个一个一个x一个一个二个x
rsl1atfo3#
一个简单的解决方案是使用
visible
以外的overflow
值,使文本伸缩基础宽度按预期重置。1.这里,使用值
auto
,文本按预期换行,并且文章内容不会溢出主容器。1.此外,项目
flex
值必须具有auto
基并且能够收缩,或者只能增长并且显式0
基kulphzqa4#
我知道现在说这个有点晚了,但是对我来说,我发现对元素应用
flex-basis: 0;
可以防止它溢出。ma8fv8wu5#
请使用
flex: 1
代替flex: 1 0 auto
mpbci0fu6#
如果希望溢出换行:
flex-flow: row wrap
bvk5enib7#
它并不适用于每种情况,因为不是所有的项都可以有一个非比例的最大值,但是在违规的元素/容器上打上一个好的ol'
max-width
可以让它回到正轨。px9o7tmv8#
max-width
适合我。CSS预处理器的变量允许避免硬编码。
overflow: hidden
也可以工作,但我最近尝试不使用它,因为它隐藏了弹出窗口和下拉菜单的元素。wj8zmpe19#
它也能工作