弹性盒子允许在容器发生改变时自动改变容器内元素的大小。

容器

当使用 display: flex 或者 display: inline-flex 时,容器变成一个 Flex 容器。Flex 容器内的所有元素都会变成 Flex Items。

flex 的定义不是递归的。只有第一级子元素才会变成 Flex items。

Flex Item

Flex 容器内的元素会变成 Flex item。任何位于其中的 text 会被匿名 block 包裹,如果 text 只包含 whitespace(会被 white-space 属性影响)字符,则 flex 根本不会渲染它,这和为此匿名块设置了 display: none 效果相同。

flex item 的大小计算方式如下:

  1. 根据 flex-basis 计算元素的基本宽度。这个值默认为 auto,意为 flex item 的宽度。

  2. 计算 flex 容器的剩余宽度。

  3. 将剩余宽度分配到子元素上。

在存在剩余宽度的情况下,flex item 会分配得到多余的宽度。在不存在剩余宽度的情况下,flex 容器会发生溢出,要避免这种情况,可以将某个 flex item 的最小宽度设置为 0:

<div className='flex gap-2 justify-between w-full'>
  <div className="min-w-0">
    <div className="flex gap-2 items-center">
      <span
        className="whitespace-nowrap overflow-hidden text-ellipsis"
        title={message}
      >
        {message}
      </span>
      <Badge className="font-mono h-8">{oid.slice(0, 6)}</Badge>
    </div>
  </div>
  <div className='w-8 h-8'>
  </div>
</div>
如果 text 被深深嵌套在容器的内部,则只需要给最顶级元素设置 min-w-0
Last moify: 2022-12-04 15:11:33
Build time:2025-08-18 18:43:08
Powered By asphinx