当前位置: 首页 > 面试题库 >

flex-basis和width有什么区别?

傅星光
2023-03-14
问题内容

关于此有很多问题和文章,但据我所知,尚无定论。我能找到的最好的总结是

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

…本身并没有过多说明具有 flex-basis 设置的元素的行为。以我目前对flexbox的了解,我不明白为什么那也不能描述 宽度

我想知道 flex-basis 与实际 宽度 有何不同:

  • 如果我用 flex-basis 代替 width (反之亦然),那么视觉上会发生什么变化? __
  • 如果将两者都设置为不同的值会怎样?如果它们具有相同的值会怎样?
  • 在某些特殊情况下,使用 widthflex-basis 与使用其他 宽度flex-basis 会有很大区别吗?
  • 如何 宽度柔性基础上 与其他Flexbox的风格,如配合使用时,不同的 柔性包装柔性成长弹性收缩
  • 还有其他重大区别吗?

问题答案:

考虑 flex-direction

阅读问题时首先想到的是,flex-basis这并不总是适用于width

flex-directionrowflex-basis控制宽度。

但是,当flex-directioncolumnflex-basis控制高度。

关键差异

以下是flex-basiswidth/ 之间的一些重要区别height

  • flex-basis仅适用于弹性商品。Flex容器(也不是flex项目)将忽略,flex-basis但可以使用widthheight

  • flex-basis仅在主轴上起作用。例如,如果您在中flex-direction: column,则width需要该属性以水平调整弹性项目的大小。

  • flex-basis对绝对放置的弹性项目没有影响。widthheight属性将是必要的。绝对定位的弹性项目不参与弹性布局。

  • 通过使用flex属性,三种属性- flex-growflex-shrinkflex-basis-可整齐地组合成一个声明。使用width,相同的规则将需要多行代码。

浏览器行为

就它们的呈现方式而言,和之间应该 没有区别 ,除非是或。flex-basis``width``flex-basis``auto``content

从规格:

7.2.3。 该flex-basis物业

对于auto和以外的所有值contentflex-basis解析方式与width水平写入模式相同。

但是,影响autocontent可能根本很少或没有。规格中的更多内容:

auto

在弹性商品上指定时,auto关键字将检索main size属性的值作为used flex- basis。如果该值本身是auto,则使用的值为content

content

表示根据弹性项目的内容自动调整大小。

_注意:此值在“ Flexible Box Layout”的初始发行版中不存在,因此某些较早的实现不支持该值。

可以通过将auto主尺寸(widthheight)与一起使用来达到同等效果auto。_

因此,根据规范,flex-basis并进行width相同的解析,除非flex- basisautocontent。在这种情况下,flex-basis可以使用内容宽度(大概也可以使用该width属性的宽度)。

flex-shrink因素

记住Flex容器的初始设置很重要。其中一些设置包括:

  • flex-direction: row -伸缩项目将水平对齐
  • justify-content: flex-start -flex项目将堆叠在主轴线的开始处
  • align-items: stretch -伸缩物品将扩展以覆盖容器的横向尺寸
  • flex-wrap: nowrap -弹性项目被迫停留在一行
  • flex-shrink: 1 -允许伸缩项目收缩

注意最后的设置。

因为默认情况下允许弹性项目收缩(这可以防止它们溢出容器),所以指定的flex-basis/ width/ height可能会被覆盖。

例如, flex-basis: 100pxwidth: 100px与结合使用flex-shrink: 1,不一定是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 */

7.2。 灵活性的组成部分

鼓励作者使用flex速记而不是直接使用其速记属性来控制灵活性,因为速记会正确地重置任何未指定的组件以适应常见用途。

浏览器错误

某些浏览器无法在嵌套的flex容器中调整flex项的大小。

flex-basis在嵌套的flex容器中被忽略。width作品。

使用时flex-basis,容器将忽略其子容器的大小,并且子容器会溢出容器。但是在拥有该width属性的情况下,该容器尊重其子级的大小并相应地扩展。



 类似资料:
  • 问题内容: 我最近开始使用flexbox,经常会遇到需要在主轴之间分配空间的情况。 我经常在和之间犹豫。例如,如果我要一项测量2个量度,而另一项测量100%,则我有两个选择。我可以设置和,或和。 有时,如果我希望一个元素扩大其余空间,我可以这样做或。 我该如何选择?使用width与flex-grow有什么区别/注意事项? 问题答案: 和是两个完全不同的CSS特性。 该属性用于定义元素的宽度。 该属

  • 本文向大家介绍请说说width: auto和width: 100%有什么区别?相关面试题,主要包含被问及请说说width: auto和width: 100%有什么区别?时的应答技巧和注意事项,需要的朋友参考一下 width:auto 是自适应宽度 减去 magrin 边框 等间距,剩余的宽度,width:100% 是占据父元素的 100% 宽度

  • 问题内容: 我正在尝试在ID包装器中垂直对齐元素。我将属性赋予此ID,因为ID包装器是flex容器。 但是呈现方式没有什么区别。我希望包装ID中的所有内容都会显示出来。为什么不呢 问题答案: 不会使 弹性项目 内联显示。它使 伸缩容器 内联显示。这是和之间的唯一区别。可以在和之间以及与具有内联对应项的几乎所有其他显示类型之间进行类似的比较。1个 弹性项目的效果绝对没有区别;无论flex容器是块级还

  • 问题内容: 设置或设置为弹性项目而不是设置之间有区别吗? 是属性的“转折点” 吗? 当我设置浏览器时,如何确定将项目下移到新行的哪一点?是根据他们的宽度还是“弹性基础”? 示例:最后两个框具有相同的功能,但是当窗口在300px至400px之间时, 只有 其中一个向下移动。为什么? 问题答案: 允许您在计算其他任何内容之前指定元素的初始/开始大小。它可以是百分比或绝对值。 但是,它 不是 弯曲增长/

  • 本文向大家介绍flex:1与flex:auto有什么区别?相关面试题,主要包含被问及flex:1与flex:auto有什么区别?时的应答技巧和注意事项,需要的朋友参考一下

  • 问题内容: 可以在这里找到代码: 我发现有内标记,也有内标签。它们都是必需的吗?(在这种情况下,CSS似乎覆盖了HTML属性)关于它们之间的区别是否有任何解释? 问题答案: 我检查了文档,但是它们并不清楚如果同时设置了它们。 那藏在这里的某个地方: UA可以选择使用HTML源文档中的表示属性。如果是这样,则将这些属性转换为对应的CSS规则,其特异性等于0,并且将其视为在作者样式表的开头插入。因此,