5月27日 01:06

什么是 CSS 弹性盒布局模型?

Flexbox(弹性盒布局)是一维布局模型,控制元素在一条轴(主轴或交叉轴)上的排列和对齐。设 display: flex 后,容器变成弹性容器,子元素变成弹性项目。

核心概念:

  • 主轴(flex-direction 决定方向)和交叉轴
  • 容器属性:justify-content(主轴对齐)、align-items(交叉轴对齐)、flex-wrap(换行)、gap(间距)
  • 项目属性:flex-grow(放大比例)、flex-shrink(缩小比例)、flex-basis(基础大小)、align-self(单独对齐)

最常用的三件套:display: flex; justify-content: center; align-items: center; —— 一行代码实现水平垂直居中。

追问

flex: 1 是什么意思?

flex: 1 = flex-grow: 1; flex-shrink: 1; flex-basis: 0%。表示元素按比例瓜分剩余空间,常用于等分布局。flex: auto 不同在于 flex-basis: auto(先看元素自身尺寸再瓜分剩余空间)。

Flexbox 和 Grid 什么时候用哪个?

Flexbox 是一维的,适合组件内部排列(导航栏、按钮组、表单行)。Grid 是二维的,适合页面级布局(一行多列、复杂网格)。实际项目混用居多:Grid 做页面骨架,Flexbox 做组件内部。

为什么 flex 子元素设置 width 有时不生效?

flex-shrink 默认是 1,空间不够时项目会被压缩。加上 flex-shrink: 0min-width: <你的宽度> 阻止收缩即可。

标签:CSS