什么是flex-basis属性设置的?

ily*_*lyo 43 css css3 flexbox

设置max-widthwidth弹性项目之间是否有区别而不是flex-basis

这是flex-grow/shrink物业的"突破点" 吗?

当我设置flex-wrap: wrap浏览器如何决定将项目下移到新行时?是根据他们的宽度还是'弹性基础'?

示例:http://jsfiddle.net/wP5UP/ 最后两个框具有相同的内容flex-basis: 200px,但当窗口介于300px和400px之间时,其中只有一个框向下移动.为什么?

Ter*_*rry 42

flex-basis允许您在计算任何其他内容之前指定元素的初始/起始大小.它可以是百分比或绝对值.

然而,它不是柔性生长/收缩特性的突破点.浏览器根据元素的初始大小是否超过横轴的宽度(在传统意义上,即宽度)确定何时包装元素.

基于你的小提琴,最后一个向下移动窗口的原因是因为父级的宽度已被前一个兄弟姐妹完全占用 - 当你允许内容换行时,不能适应第一行的元素得到推到后续行.由于flex-grow是一个非零值,它将简单地拉伸以填充第二行中剩余的所有空格.

请参阅演示小提琴(由您修改).

如果你看一下这个小提琴,我已经修改了最后一个项目以获得一个新的大小声明:

.size3 {
  flex: 0 1 300px;
}
Run Code Online (Sandbox Code Playgroud)

您将意识到该元素按预期测量300px.但是,当您调整flex-grow属性使其值超过0(参见示例)时,它将拉伸以填充行,这是预期的行为.因为在它的新行上下文中它没有可比较的兄弟,所以1到无穷大之间的整数不会影响它的大小.

因此,flex-grow可以看作是这样的:

  • 0:(默认值)不要伸展.大小到元素的内容宽度,或服从flex-basis.
  • 1:拉伸.
  • ?2(整数n):拉伸.例如,将是同一行上其他元素大小的nflex-grow: 1.

  • @tomekwi当你设置冲突的`width`和`flex-basis`时,使用`flex-basis`.实际上,唯一使用`width`的时候是`flex-basis`设置为`auto`,这是**默认值**.将它设置为任何它将适用.另请注意,如果尊重`min-width`和`max-width`,并且同一行中的兄弟姐妹都会考虑它,但有时看起来像'flex-shrink | grow'不能正确应用. (3认同)
  • `flex-shrink`与`flex-grow`的工作方式类似:它指示当同一行上的初始/原始宽度之和超过沿横轴的可用空间时元素应缩小多少.将其设置为"0"可防止折叠超出其最小宽度(通常受每个元素中的内容限制),而无量纲整数值允许折叠:"1"将启用折叠,"n"允许您设置每个元素的距离比率相对于'1`折叠. (2认同)