侧边栏壁纸
博主头像
星空之窗

学如逆水行舟,不进则退。

  • 累计撰写 4 篇文章
  • 累计创建 14 个标签
  • 累计收到 4 条评论

目 录CONTENT

文章目录

Flex-1

星河景明
2025-02-08 / 0 评论 / 2 点赞 / 13 阅读 / 0 字 / 正在检测是否收录...
温馨提示:
部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

Flex: 1

今天在学习 Full-Stack Social Media App Tutorial with React 19 & Next.js 15 & MySql | React Next.js Full Course 时遇到了好几次使用 flex-1,这是由 Tailwindcss 提供的预定义的类名,等同于为该元素挂上了 flex: 1

flex 是 CSS 中一个常用的 简写属性,其实际上是 flex-growflex-shrinkflex-basis 三个属性的简写,而 flex: 1 则等同于 flex: 1 1 0%

  • flex-grow: 1:定义项目的放大比例,值为 1 表示如果存在剩余空间,项目将按比例放大。
  • flex-shrink: 1:定义项目的缩小比例,值为 1 表示如果空间不足,项目将按比例缩小。
  • flex-basis: 0%:定义在分配多余空间之前,项目占据的主轴空间,值为 0% 表示项目的初始大小为 0。

flex: autoflex: 1 的区别

在 CSS Flex 布局中,flex: 1flex: auto 都用于定义弹性项目如何在容器中分配空间,但它们的行为有所不同,主要区别在于 flex-basis 属性的取值:

  • flex: 1:等同于 flex: 1 1 0%,其中 flex-basis0%。这意味着元素的初始大小被设为 0,在分配剩余空间时,各元素按比例平分剩余空间,而不考虑其内容的固有大小。
  • flex: auto:等同于 flex: 1 1 auto,其中 flex-basisauto。这表示元素的初始大小基于其内容的固有尺寸,在分配剩余空间时,首先考虑元素的内容大小,然后再根据剩余空间进行伸缩。

具体区别:

  • 空间分配方式

    • 使用 flex: 1 时,所有设置了该属性的元素会忽略自身内容的宽度,平分容器的剩余空间。
    • 使用 flex: auto 时,元素首先根据自身内容确定初始大小,然后在剩余空间中按比例分配。

适用场景:

  • flex: 1:适用于需要所有元素等分剩余空间的场景,例如创建等宽的导航按钮或卡片布局。
  • flex: auto:适用于希望元素根据自身内容动态调整大小的场景,例如导航栏中的菜单项,其宽度根据文字长度自动调整。

Flex

以下摘取自 MDN Web Docs 中对该属性的语法解释:

语法


/* 关键字值 */
flex: auto;
flex: initial;
flex: none;

/* 单值,无单位数字:flex-grow
flex-basis 此时等于 0。 */
flex: 2;

/* 单值,宽度/高度:flex-basis */
flex: 10em;
flex: 30px;
flex: min-content;

/* 双值:flex-grow | flex-basis */
flex: 1 30px;

/* 双值:flex-grow | flex-shrink */
flex: 2 2;

/* 三值:flex-grow | flex-shrink | flex-basis */
flex: 2 2 10%;

/* 全局值 */
flex: inherit;
flex: initial;
flex: revert;
flex: revert-layer;
flex: unset;

可以使用一个、两个或三个值来指定 flex 属性。

  • 单值语法:值必须是以下之一:

    • 一个 flex-grow 的有效值:此时简写会扩展为 flex: <flex-grow> 1 0
    • 一个 flex-basis 的有效值:此时简写会扩展为 flex: 1 1 <flex-basis>
    • 关键字 none 或者全局关键字之一。
  • 双值语法

    • 第一个值必须是一个 flex-grow 的有效值。

    • 第二个值必须是以下之一:

      • 一个 flex-shrink 的有效值:此时简写会扩展为 flex: <flex-grow> <flex-shrink> 0
      • 一个 flex-basis 的有效值:此时简写会扩展为 flex: <flex-grow> 1 <flex-basis>
  • 三值语法:值必须按照以下顺序指定:

    1. 一个 flex-grow 的有效值。
    2. 一个 flex-shrink 的有效值。
    3. 一个 flex-basis 的有效值。

取值


  • initial
    元素会根据自身宽高设置尺寸。它会缩短自身以适应 flex 容器,但不会伸长并吸收 flex 容器中的额外自由空间来适应 flex 容器。相当于将属性设置为 flex: 0 1 auto
  • auto
    元素会根据自身的宽度与高度来确定尺寸,但是会伸长并吸收 flex 容器中额外的自由空间,也会缩短自身来适应 flex 容器。这相当于将属性设置为 flex: 1 1 auto
  • none
    元素会根据自身宽高来设置尺寸。它是完全非弹性的:既不会缩短,也不会伸长来适应 flex 容器。相当于将属性设置为 flex: 0 0 auto
  • flex-grow
    定义 flex 项目的 flex-grow。负值无效。省略时默认值为 1。 (初始值为 0)
  • flex-shrink
    定义 flex 元素的 flex-shrink。负值无效。省略时默认值为 1。 (初始值为 1)
  • flex-basis
    定义 flex 元素的 flex-basis 属性。若值为 0,则必须加上单位,以免被视作伸缩性。省略时默认值为 0。(初始值为 auto)

主要参考

2
CSS
  1. 支付宝打赏

    qrcode alipay
  2. 微信打赏

    qrcode weixin

评论区