- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
关于这一点,有很多问题和文章,但据我所知,没有什么结论。我能找到的最好的总结是
flex basis允许您在计算任何其他元素之前指定元素的初始/起始大小。它可以是百分比,也可以是绝对值。
…这本身并没有说明使用flex基集的元素的行为。以我目前对flexbox的了解,我不明白为什么不能同时描述宽度。
我想知道在实践中弹性基础和宽度到底有什么不同:
如果我将宽度替换为弹性基础(反之亦然),视觉上会有什么变化?
如果我将两者设置为不同的值,会发生什么情况?如果它们有相同的价值会发生什么?
在某些特殊情况下,使用宽度或弹性基础与使用其他基础有显著差异吗?
当与其他flexbox样式(如flex wrap、flex grow和flex shrink)结合使用时,宽度和flex basis有何不同?
还有其他显著差异吗?
编辑/澄清:这个问题在What exactly flex-basis property sets?中以不同的格式提出,但我觉得更直接地比较或总结弹性基础和宽度(或高度)的差异会更好。
最佳答案
考虑flex-direction
阅读问题时首先想到的是flex-basis
并不总是适用于width
。
当flex-direction
为row
时,flex-basis
控制宽度。
但当flex-direction
是column
时,flex-basis
控制高度。
主要区别
以下是flex-basis
和width
/height
之间的一些重要区别:flex-basis
仅适用于弹性项。Flex容器(也不是Flex项)将忽略flex-basis
,但可以使用width
和height
。flex-basis
只在主轴上工作。例如,如果您在flex-direction: column
中,则需要width
属性来水平调整flex项的大小。flex-basis
对绝对定位的弹性项目没有影响。width
和height
属性是必需的。Absolutely-positioned flex items do not participate in flex layout。
通过使用flex
属性,可以将flex-grow
、flex-shrink
和flex-basis
三个属性巧妙地组合成一个声明。使用width
,同一规则将需要多行代码。
浏览器行为
就渲染方式而言,flex-basis
和width
之间应该没有区别,除非flex-basis
是auto
或content
。
从规范:
7.2.3. The flex-basis
property
对于除auto
和content
之外的所有值,flex-basis
的解析方式与水平写入模式中的width
相同。
但是auto
或content
的影响可能很小,或者根本没有影响。规范中的更多内容:auto
在flex项上指定时,auto
关键字将检索该值
的主大小属性。如果这个值是
本身flex-basis
,则使用的值为auto
。content
表示根据flex项的内容自动调整大小。
注意:此值不存在于最初的柔性版本中。
Box布局,因此一些较旧的实现将不支持它。
将content
与auto
的主要大小(width
或height
)。
因此,根据规范,auto
和flex-basis
的解析是相同的,除非width
是flex-basis
或auto
。在这种情况下,content
可能会使用内容宽度(也可能会使用flex-basis
属性)。width
因子
记住flex容器的初始设置很重要。其中一些设置包括:flex-shrink
-弹性项将水平对齐
Flex项目将在主轴线的开始处堆叠。flex-direction: row
-柔性项目将扩展以覆盖容器的交叉尺寸justify-content: flex-start
-弹性项被迫保持在一行中align-items: stretch
-允许弹性项收缩
注意最后的设置。
由于默认情况下允许flex项收缩(这可以防止它们溢出容器),因此可以覆盖指定的flex-wrap: nowrap
/flex-shrink: 1
/flex-basis
。
例如,width
或height
加上flex-basis: 100px
,不一定是100px。
要渲染指定的宽度并保持其固定,需要禁用收缩:
div {
width: 100px;
flex-shrink: 0;
}
div {
flex-basis: 100px;
flex-shrink: 0;
}
flex: 0 0 100px; /* don't grow, don't shrink, stay fixed at 100px */
width: 100px
速记来控制灵活性。
flex-shrink: 1
在嵌套的flex容器中被忽略。
flex
有效。
flex-basis
时,容器忽略其子级的大小,子级会溢出容器。但使用
width
属性时,容器会尊重其子级的大小并相应地扩展。
flex-basis
和
width
溢出
flex-basis
容器调整项目。
white-space: nowrap
有效。
inline-flex
的flex容器在呈现具有
width
的同级对象时似乎无法识别子对象上的
inline-flex
(尽管它可能只是宽度未定义的项)。容器无法扩展以容纳项目。
flex-basis
属性而不是
white-space: nowrap
时,容器会尊重其子级的大小并相应地扩展。这在IE11和Edge中不是问题。
width
(和
flex-basis
)不处理表元素
flex-basis
shorthand declarations with unitless flex-grow
values are ignored
flex
doesn't account for flex-basis
flex-basis
doesn't support box-sizing: border-box
flex-basis
when using calc()
shorthand
关于css - flex-basis和width有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33338812/
我一直在阅读MDN article在 flex-basis css 属性。在那里我没有看到 flex-basis: auto 的任何定义.它解释了flex-basis: content .好像cont
这个问题在这里已经有了答案: What are the differences between flex-basis and width? (6 个答案) 关闭 5 年前。 我有一个容器,其中的元素
我在 flex 中有一个非常基本的网格设置,但我最近遇到了一个疏忽。 我的列有右边距:3em 和 flex-basis:calc(33% - 3em)。 我的问题是第 4 和第 5 个在有一个完整的“
如何让 flex 元素在次轴收缩? 例如,我有一个容器,里面有很多元素。它们都位于列中,但我希望它们的宽度也可以缩小: .container { display: flex; flex-dir
我有 3 个元素,我正在尝试使用 flex-basis 使它们并排占据屏幕的 20%、20% 和 60%(按此顺序),当窗口大小减小时,它们会进入专栏,问题是我的 flex-basis 什么都不做,我
(我知道这个问题在很多情况下都有详细记录,但我似乎找不到解决方法。) 问题是页面底部的 flexbox 元素高度不足 - 可能是因为这些元素中的图像加载缓慢。 这是一个例子:http://paleom
z - double 矩阵,大小为 Nx2; x - double 矩阵,大小为 Nx2; sup = x(i, :); phi(1, i) = {@(z) exp(-g * sum((z - sup
将 max-width 或 width 设置为 flex 元素而不是 flex-basis 有区别吗? 它是 flex-grow/shrink 属性的“断点”吗? 当我设置 flex-wrap: wr
刚刚学习机器学习,我正在寻找类似于 Haskell 的 const 的内置函数。它将被定义为: fun const a b = a 当然,我自己很容易实现 :) 但我认为可能有一个等效的标准功能被我忽
我想在我的项目中使用 BASYS 3 的时钟。当我搜索项目的约束时,我发现了以下代码: set_property PACKAGE_PIN W5 [get_ports clk] set_property
是否可以在 SAP 中的 RFC_READ_TABLE 的 OPTIONS 参数表中使用子查询? 像这样的东西 field in (select otherfield from othertable
我正在使用Basys mx3,并使用SSDDEMO,它在十六进制中充当计时器,我正在尝试将计时器更改为十进制,但没有成功..我该怎么做:)?非常感谢,这是 ssddemo 的链接: https://g
我为具有给定数量的粒子 N 和站点 Mtot 的 bossons 生成一个 Fock 基础(量子力学),它只是构建一组包含 Mtot 必须用N 项覆盖的地方(见下面的代码)。然后我用 M 站点 (Mt
fiddle :http://jsfiddle.net/y8d2q3ww/2/ .flex-container{display:flex;width:100%} .square{flex-basis:
我实际上找到了解决问题的方法,但想知道为什么我原来的解决方案不起作用。 我有一个简单的 flex 容器,我希望第一个 div 占容器的 30%。我给它一个 30% 的 flex-basis 来尝试实现
这个问题在这里已经有了答案: Flex-Basis for Wrapping Columns (2 个答案) 关闭 5 年前。
有一个带有 flex-direction: row 的 flex 容器。这些单独的列中的每一个都是具有 flex-direction: column 的 flex 容器。 在 flex 行中有一些表单
这个问题在这里已经有了答案: Grid with viewport height and inner scrolling div (2 个答案) 关闭 4 年前。
如何使第二列中的文本在达到列的 flex-basis 后换行?考虑到我已将 flex-basis 设置为 100px,为什么右列的宽度仍然增加? .specific-image-flexbox {
我有一个输入元素,我想使用 flex shrink 来扩大和缩小它,但它的 flex-basis 大小没有被应用。 这是我的 html: 和我的CSS: input{ background-co
我是一名优秀的程序员,十分优秀!