(放大)和 (缩小)是 CSS Flexbox 布局中两个核心属性,它们的计算方式虽然看似对称,但实际上有着本质的区别,特别是 引入了“权重”的概念。 以下是详细的计算规则和示例。 --- 前置概念 在计算之前,浏览器首先确定 (基础尺寸)。 如果有设置 且不为 auto,则取该值。 如果 ,则取 的值。 如果都没设置,则根据内容大小决定。 我们定义以下变量: 剩余空间 (Free Space) = 容器主轴尺寸 - 所有项目 之和。 --- 1. 的计算规则(瓜分剩余空间) 当 剩余空间 > 0 时, 生效。它决定了如何分配这些多出来的空间。 计算公式 的计算相对简单,它是按照比例分配剩余空间。 1. 计算总 Grow 值:$Sum(grow) = \text{所有项目的 flex-grow 之和}$ 2. 计算每个项目分得的空间: $$ \text{分得空间} = \text{剩余空间} \times \frac{\text{当前项目的 flex-grow}}{\text{Sum(grow)}} $$ 3. 最终尺寸 = + 分得空间 示例 容器宽度: 项目 A:, 项目 B...