CSS 盒尺寸模块第 3 级

W3C 工作草案,

有关本文档的更多详细信息
此版本:
https://www.w3.org/TR/2026/WD-css-sizing-3-20260904/
最新发布版本:
https://www.w3.org/TR/css-sizing-3/
编辑草案:
https://drafts.csswg.org/css-sizing-3/
先前版本:
历史:
https://www.w3.org/standards/history/css-sizing-3/
反馈:
CSSWG 问题仓库
CSSWG GitHub
规范中的内联问题
编辑:
Tab Atkins (Google)
Elika J. Etemad / fantasai (Apple)
为此规范建议编辑:
GitHub 编辑器
测试套件:
https://wpt.fyi/results/css/css-sizing/

摘要

本模块使用表示基于内容的“内在”尺寸 和基于上下文的“外在”尺寸的关键字扩展了 CSS 尺寸属性,使 CSS 能够更轻松地描述适应其内容或 适应特定布局上下文的盒。

CSS 是一种用于描述结构化文档 (例如 HTML 和 XML) 在屏幕、纸张等介质上呈现方式的语言。

本文档的状态

本节描述本文档发布时的状态。 当前 W3C 出版物列表 以及本技术报告的最新修订版 可在 W3C 标准和草案索引中找到。

本文档由 CSS 工作组 使用推荐标准 路径发布为工作草案。 发布为工作草案 并不意味着得到 W3C 及其成员的认可。

本文档是一份草案文档, 随时可能被其他文档更新、替代 或废弃。 除作为进行中的工作外,不宜引用本文档。

请通过 在 GitHub 中提交问题(首选)来发送反馈, 并在标题中包含规范代码“css-sizing”,如下所示: “[css-sizing] ……评论摘要……”。 所有问题和评论都会被存档。 或者,也可以将反馈发送到(已存档的)公共邮件列表 www-style@w3.org。

本文档受 2025年8月18日 W3C 流程 文档约束。

本文档由一个依据 W3C 专利政策运作的工作组制定。 W3C 维护一份 所有专利披露的公开列表, 这些披露与该工作组的交付成果有关; 该页面还包含披露专利的说明。 任何确切知晓某项专利,并认为该专利 包含必要权利要求的个人, 都必须按照 W3C 专利政策第 6 节披露相关信息。

以下特性存在风险,并可能在 CR 阶段被移除:

“存在风险”是 W3C 流程中的专门术语,并不一定意味着该特性面临被 移除或延迟的危险。它意味着工作组认为该特性可能难以及时实现互操作, 将其标记为存在风险后,工作组在过渡到 Proposed Rec 阶段时,如有必要便可以移除该特性, 而无需先发布一份不包含该特性的新 Candidate Rec。

1. 引言

本节为非规范性内容。

CSS 布局中有若干不同的自动尺寸概念,用于各种布局计算。 本节定义了一些更精确的术语, 以帮助将本规范中的布局行为与其他模块中使用的计算联系起来, 并为 width 和 height 属性定义了一些新的关键字, 以允许作者为元素指定这些尺寸计算所得的尺寸。

测试

通用尺寸测试


本规范需要 插图!参见问题。

1.1. 模块交互

本模块扩展了 width、height、min-width、min-height、max-width、max-height 和 column-width 特性,这些特性定义于 [CSS2] 第 10 章以及 [CSS3COL] 中。

本模块中对 box-sizing 属性的定义取代了 [CSS-UI-3] 中的定义。

1.2. 值定义

本规范遵循 CSS 属性 定义约定,该约定来自 [CSS2], 并使用 值定义语法,该语法来自 [CSS-VALUES-3]。 本规范中未定义的值类型定义于 CSS 值和单位 [CSS-VALUES-3] 中。 与其他 CSS 模块组合时,可能会扩展这些值类型的定义。

除了各属性定义中列出的特定属性值之外, 本规范定义的所有属性 还接受 CSS 全局关键字作为其属性值。 为提高可读性,这些关键字没有明确重复列出。

2. 术语

与坐标轴和尺寸相关的一些关键术语 定义于 CSS 书写模式 3 § 6 抽象盒术语中。

尺寸
一维或二维度量: 块尺寸和/或行内尺寸; 或者是宽度和/或高度。
在从左到右、从上到下的横排英语中,
				          水平宽度与行内尺寸同义,
				          而垂直高度与块尺寸同义。在从上到下、从右到左的竖排日语中,
				           水平宽度与块尺寸同义,
				           而垂直高度与行内尺寸同义。
宽度或高度究竟对应 行内尺寸还是 块尺寸,取决于 书写模式。
内部尺寸
一个盒的 内容盒尺寸。
内部尺寸
外部尺寸
一个盒的 外边距盒尺寸。
外部尺寸
确定尺寸
无需执行布局即可确定的尺寸; 即,一个 <length>、 一段文本的度量值(不考虑换行)、 初始包含块的尺寸, 或者一个 <percentage> 或其他公式 (例如非替换块的“拉伸适应”尺寸计算 [CSS2]), 且该公式仅相对于确定尺寸进行解析。

此外,绝对定位元素的包含块尺寸相对于该元素始终是 确定的。

不确定尺寸
不是确定尺寸的尺寸。 不确定的可用空间本质上是 无限的。

注: 内在尺寸计算关键字,例如 max-content,是不确定的, 即使无需对子元素进行布局即可确定它们, 例如由于尺寸遏制或没有子元素。

可用 空间
表示盒被布局到其中的空间的尺寸, 由 该盒所参与的格式化上下文的规则确定。 盒的可用空间通常 要么是其包含块的度量值(如果它是确定的), 要么是无限尺寸(当它是不确定的时)。 可用空间也可以是 最小内容 约束或 最大内容 约束, 从而强制布局到其中的盒在该约束下进行布局。
测试
拉伸适应
对给定尺寸进行的拉伸适应 是该尺寸 减去盒在给定维度上的计算外边距(不折叠,并将 auto 视为零)、 边框和内边距 (从而使外部尺寸完全适合), 并将结果下限限定为零 (从而使内部尺寸不会为负)。

注:这是 CSS2.1§10.3.3 中用于计算正常流中 非替换块的 auto 宽度的公式。

回退尺寸
某些尺寸算法无法很好地处理无限尺寸。 在这些情况下,将改用回退尺寸。 除非另有规定, 它是初始包含块的尺寸。

2.1. 自动盒尺寸

CSS 中有四种自动确定的尺寸 (即根据上下文由 auto 尺寸规则得到的尺寸):

拉伸适应尺寸
拉伸适应行内 尺寸
拉伸适应块 尺寸
如果一个盒的外部尺寸在给定轴上填满 可用空间, 该盒所占据的尺寸; 换言之,如果可用空间是确定的,则为对该空间进行的拉伸 适应。 如果可用空间是不确定的,则未定义。

注: 对于行内 轴,这在 CSS2.1§10.3.5 中称为“可用宽度”, 并按 CSS2.1§10.3.3 中的规则计算。

注: 涉及此尺寸的计算需要 为可用空间 是不确定时 指定回退行为(如果这种情况可能发生)。

最大内容尺寸
当给定无限可用空间时,盒在给定轴上的“理想”尺寸。 通常,这是盒在该轴上仍能包住其内容时所能采用的最小尺寸, 即在避免溢出的同时尽量减少未填充空间。
最大内容行内尺寸

盒在行内轴上的“理想”尺寸。 通常,如果盒中的软换行机会一个也不采用, 则这是它在包住其内容的同时所能采用的最窄行内尺寸。 (参见 § 5 内在尺寸确定。)

注: 这在 CSS2.1§10.3.5 中称为“首选宽度”, 在 CSS2.1§17.5.2.2 中称为“最大单元格宽度”。

最大内容块尺寸

盒在块轴上的“理想”尺寸。 通常是内容布局后的块 尺寸。

如果理想的最大内容 尺寸小于最小内容尺寸 (例如由于使用了负外边距), 则实际的最大内容尺寸以下限最小内容尺寸为准。

最小内容尺寸
名义上,这是盒所能采用的最小尺寸, 且不会导致通过选择更大的尺寸即可避免的溢出。 形式上,它是在最小内容约束下确定尺寸时盒的尺寸, 参见 § 5 内在尺寸确定。
最小内容行内尺寸

最小内容 尺寸在行内轴上的值。 通常,如果采用盒中的所有软换行机会, 则这是恰好能包住其内容的行内 尺寸。

注: 这在 CSS2.1§10.3.5 中称为“首选最小宽度”, 在 CSS2.1§17.5.2.2 中称为“最小内容宽度”。

最小内容块尺寸

最小内容 尺寸在块轴上的值。 对于块容器、表格和行内 盒, 它等价于最大内容块尺寸。

适应内容尺寸
适应内容行内 尺寸
适应内容块 尺寸
如果给定轴上的可用空间 是确定的, 则等于 clamp(最小内容尺寸, 拉伸适应尺寸, 最大内容尺寸) (即 max(最小内容尺寸, min(最大内容尺寸, 拉伸适应尺寸)))。 在最小内容约束下确定尺寸时, 等于最小内容尺寸。 否则,等于该轴上的最大内容尺寸。

注: 这在 CSS2.1§10.3.5 和 CSS 多列布局 § 3.4 中称为“收缩适应”宽度。

内在尺寸
最大内容尺寸或最小内容尺寸, 即主要由内容尺寸产生的尺寸。 (该术语的某些用法也可能指 主要由这两种尺寸之一派生出的尺寸。)

替换元素通常根据其自然尺寸派生其内在尺寸。

以下示例将适应内容尺寸计算 应用于内部 <div> 的宽度, 并将其放置在尺寸不同的包含块中:
<!DOCTYPE html>
<style>div > div { width: fit-content; }</style>
<div style="width: 2ch;">
  <div>abc def ehg</div>
</div>
<div style="width: 9ch;">
  <div>abc def ehg</div>
</div>
<div style="width: 16ch;">
  <div>abc def ehg</div>
</div>
说明上述示例:
					一个与“abc”一样宽的红色盒,
					另一个略宽于“abc def”,
					第三个与单行完整字符串一样宽。

如果在这里用 min-width 或 max-width 属性代替 width, 则会将这些相同的尺寸分别应用为最小宽度或最大宽度, 从而约束首选宽度以确定 使用宽度。 参见 § 3 指定盒尺寸和 § 3.2 尺寸 值:<length-percentage>、auto | none、stretch、min-content、max-content 和 fit-content 值。

2.2. 内在尺寸贡献

最大内容贡献
一个盒为其包含块的最大内容尺寸所贡献的尺寸。
最小内容贡献
一个盒为其包含块的最小内容尺寸所贡献的尺寸。
内在尺寸 贡献
最大内容贡献、最小内容贡献, 或以类似方式计算的基于内容的尺寸贡献。

内在尺寸贡献基于盒的外部尺寸; 为此,auto 外边距被视为零。

如果理想的最大内容贡献小于最小内容 贡献 (例如由于使用负外边距), 则实际的最大内容贡献以下限 最小内容贡献为准。

2.3. 内在尺寸约束

最大内容 约束
由盒的包含块施加的尺寸约束, 它使该盒产生其最大内容贡献。
最小内容 约束
由盒的包含块施加的尺寸约束, 它使该盒产生其最小内容贡献。
首选宽高 比
盒固有的宽度:高度比, 它会影响各种尺寸算法, 使其在遵守其他尺寸输入的前提下尽可能生成与该宽高比一致的尺寸。 除非另有规定, 如果盒具有自然宽高比, 则盒的首选宽高比就是该自然宽高比, 并应用于其内容盒。 大多数盒都没有首选宽高比。
测试

3. 指定盒尺寸

3.1. 尺寸属性

本节定义尺寸属性, 它们指定所应用盒的首选、 最小和最大尺寸。 它们可能的值在下一节中定义: § 3.2 尺寸值:<length-percentage>、auto | none、stretch、min-content、 max-content 和 fit-content 值。

流相对变体(inline-size、block-size 等) 使用元素自身的书写模式进行映射, 并按 [CSS-LOGICAL-1] 中的定义 与其物理对应项(width、height 等) 交互。 另见 CSS 书写模式 3 § 6 抽象盒术语。

在 CSS 中,虽然最小和最大尺寸 都会约束使用尺寸, 但最小尺寸约束始终是最强约束。 此外,内部尺寸始终以下限零为准。

3.1.1. 首选尺寸属性:width、height、inline-size 和 block-size 属性

名称: width, height, inline-size, block-size
值: auto | <box-size>
初始值: auto
适用于: 除非替换行内元素以外的所有元素
继承: 否
百分比: 相对于包含块的宽度/高度
计算值: 与指定值相同,其中 <length-percentage> 值会被计算
规范顺序: 按语法
动画类型: 按计算值类型,并递归进入 fit-content()
逻辑属性 组: size
测试

width 和 height(物理) 以及 inline-size 和 block-size(流相对) 都是尺寸属性,分别指定 盒的首选 宽度 和 高度(物理), 或 行内尺寸 和 块尺寸(流相对)。

3.1.2. 最小尺寸属性:min-width、min-height、min-inline-size 和 min-block-size 属性

名称: min-width, min-height, min-inline-size, min-block-size
值: auto | <box-size>
初始值: auto
适用于: 所有接受 width 或 height 的元素
继承: 否
百分比: 相对于包含块的宽度/高度
计算值: 与指定值相同,其中 <length-percentage> 值会被计算
规范顺序: 按语法
动画类型: 按计算值,并递归进入 fit-content()
逻辑属性 组: min-size
测试

min-width 和 min-height(物理) 以及 min-inline-size 和 min-block-size(流相对) 是尺寸属性,分别指定 盒的最小宽度(“min width”) 和 最小高度(“min height”), 或 最小行内尺寸(“min inline size”) 和 最小块尺寸(“min block size”)。

注: auto 的初始值是新增的; 在 [CSS2] 中,初始值 为零。

3.1.3. 最大尺寸属性:max-width、max-height、max-inline-size 和 max-block-size 属性

名称: max-width, max-height, max-inline-size, max-block-size
值: none | <box-size>
初始值: none
适用于: 所有接受 width 或 height 的元素
继承: 否
百分比: 相对于包含块的宽度/高度
计算值: 与指定值相同,其中 <length-percentage> 值会被计算
规范顺序: 按语法
动画类型: 按计算值,并递归进入 fit-content()
逻辑属性 组: max-size
测试

max-width 和 max-height(物理) 以及 max-inline-size 和 max-block-size(流相对) 是尺寸属性,分别指定 盒的最大宽度(“max width”) 和 最大高度(“max height”), 或 最大行内尺寸(“max inline size) 和 最大块尺寸(“max block size) 。

3.2. 尺寸值:<length-percentage>、auto | none、stretch、min-content、max-content 和 fit-content 值

以下值用于尺寸属性。 除 auto 和 none 以外的值,都归入 <box-size> 产生式:

<box-size> = <length-percentage> | stretch | min-content | max-content | fit-content

注: 第 2 级中与 <box-size> 等价的内容 仅为 <length-percentage> 本身。

<length-percentage [0,∞]>
使用 <length> 和/或 <percentage> 指定盒的尺寸。 box-sizing 属性指示所度量的是内容盒还是边框盒。

百分比会根据盒的包含块的宽度/高度(视情况而定)进行解析。 如果在某个特定轴上, 包含块的尺寸依赖于盒的尺寸, 则应参见相关布局模块 中有关如何解析百分比的特殊规则。

负值无效。

测试
auto
对于 width/height,指定一个自动 尺寸 (自动块尺寸/自动行内尺寸)。 有关如何计算此值,请参见相关布局模块。

对于 min-width/min-height, 指定一个自动最小尺寸。 不过,除非相关布局模块另有定义, 它会解析为使用值 0。 为了向后兼容, 对于所有 [CSS2] 显示类型 的盒(块盒和行内盒、 行内块 以及所有表格显示类型), 当 aspect-ratio 为 auto 时, 此关键字的解析值为零。 当没有生成盒时,它也解析为零。

none
不限制盒的尺寸。
stretch
应用拉伸适应 尺寸计算, 尝试使盒的外边距盒尺寸与其 包含块的尺寸相匹配。 参见 § 4.2 拉伸适应尺寸计算:填充包含块。
测试
min-content
使用相关轴上的最小内容尺寸; 对于盒的块尺寸, 除非另有规定, 这等价于其自动尺寸。
测试
max-content
使用相关轴上的最大内容尺寸; 对于盒的块尺寸, 除非另有规定, 这等价于其自动尺寸。
fit-content
使用相关轴上的适应内容 尺寸, 即 min(max-content, max(min-content, stretch))。
测试
测试

在所有情况下, 使用值都会以下限限定,以保持内部尺寸非负。

注: stretch、min-content、max-content 和 fit-content 值 是第 3 级新增的。

注: flex-basis 属性因此也获得这些新关键字, 因为其值是通过引用 <'width'> 定义的。

3.2.1. “表现为 auto”

为了对以下两种情况使用一个共同术语: width/height 的计算值为 auto, 以及它被定义为其行为如同指定了 auto (例如块百分比 高度 相对于不确定 尺寸解析的情况, 参见 CSS2§10.5), 在这两种情况下,都称该属性表现为 auto。

注: 定义布局行为的旧版规范文本, 尤其是 [CSS2] 中的文本, 可能明确引用 width/height 的计算值为 auto 这一 条件; 其中一些情况应解释为表现为 auto, 并报告给 CSSWG 进行更新。

测试

用对新术语 自动尺寸的引用替换本节。

3.2.2. 包含或排除浮动

本节为非规范性内容。

尽管块盒边界通常允许浮动穿过, 但有时作者需要让它们包含自己的(后代)浮动, 或排除来自外部的浮动。 对于块布局, 指定 display: flow-root 会使该盒成为格式化上下文根, 从而具有这种行为。

注: 参与 Flex、Grid 或 Table 布局的盒 会自动具有这种行为。

3.3. 用于确定尺寸的盒边:box-sizing 属性

名称: box-sizing
值: content-box | border-box
初始值: content-box
适用于: 所有接受 width 或 height 的元素
继承: 否
百分比: 不适用
计算值: 指定的关键字
规范顺序: 按语法
动画类型: 离散
测试

box-sizing 属性定义 固定尺寸(例如 <length> 和 <percentage>) 是分配给内容盒还是边框盒。 它会影响所有尺寸属性的解释, 包括 flex-basis。

这些值具有以下含义:

content-box
在尺寸 属性上以 <length-percentage> 指定的尺寸表示盒的内部尺寸, 不包括外边距/边框/内边距: 它们应用于内容盒。 盒的内边距和边框 在指定的 width 和 height 外部进行布局和绘制。

注: 这是 CSS2.1 对 width 和 height 所规定的行为, 因而也是默认行为。

测试
border-box
尺寸属性中的任何 <length-percentage> 值 都应用于边框盒, 因而表示盒视觉上所呈现的尺寸: 盒的内边距和边框(但不包括 其外边距) 基本上会在使用的 width 和 height 内部进行布局和绘制, 内容盒则调整尺寸以填满剩余空间。 更具体地说, 内容盒的宽度和高度 通过从指定的 <length-percentage> 中 减去相应轴上的边框和内边距来计算, 并将结果以下限零为准 (因为盒的内部尺寸不能为负)。

尺寸属性的使用值, 例如通过 getComputedStyle() 暴露的值, 也指边框盒。

测试

受 box-sizing 影响的值包括 原始 <length-percentage> 值, 以及用于函数表示法中的值,例如 fit-content() [css-sizing-4]。 相比之下, auto 和 min-content 等非量化值不受 box-sizing 属性影响 (除非另有规定)。

例如,以下属性将 盒的内容盒尺寸设置为 100px, 其边框盒尺寸计算为 120px:
.box {
  box-sizing:   content-box; /* 默认值 */
  width:        100px;
  padding-left: 10px;
  border-left:  10px solid;
}

另一方面,通过改为 border-box, 边框盒被设置为 100px, 内容盒尺寸计算为 80px:

.box {
  box-sizing:   border-box;
  width:        100px;
  padding-left: 10px;
  border-left:  10px solid;
}

内部尺寸不能小于 零, 因此,如果 padding + border 大于指定的边框盒尺寸, 则盒最终会比指定尺寸更大。 在这种情况下,内容盒尺寸以下限 0px 为准, 因此边框盒尺寸最终为 120px, 即使为边框盒指定了 width: 100px:

.box {
  box-sizing:   border-box;
  width:        100px;
  padding-left: 60px;
  border-left:  60px solid;
  /* padding + border = 120px */
}
此示例使用 box-sizing 将 一个 div 容器内带固定尺寸边框的两个 div 在水平方向上均分, 否则这通常需要额外的标记。

示例 CSS:

div.container {
  width:38em;
  border:1em solid black;
}

div.split {
  box-sizing:border-box;
  width:50%;
  border:1em silver ridge;
  float:left;
}

示例 HTML 片段:

<div class="container">
<div class="split">此 div 占据左半部分。</div>
<div class="split">此 div 占据右半部分。</div>
</div>

示例 CSS 和 HTML 的演示:

此 div 应 占据左半部分。
此 div 应 占据右半部分。
上面的两个 div 应并排显示,每个 div(包括边框)占其容器内容宽度的 50%。 如果它们反而上下堆叠,则说明你的浏览器不支持 box-sizing。

注: 某些 HTML 元素, 例如 button, 默认采用 border-box 行为。 有关哪些元素具有这种行为的详细信息,请参见 HTML。

在旧版 CSS 规范中, 宽度、高度、 最小(min)宽度、 最小(min)高度、 最大(max)宽度和 最大(max)高度 等术语通常指一个盒的内部尺寸 (内容盒尺寸), 除非另有说明。

有关这些术语在 视觉格式化模型详细信息一节中的明确消歧, 请参见 CSS 用户界面 3 § 3.1 更改盒模型:box-sizing 属性,该节属于 [CSS2]。

为了避免歧义, 规范作者应避免在没有进一步限定的情况下使用 width 或 height 等含义不明确的术语, 并应根据具体情况明确引用并链接到 内部尺寸、 外部尺寸、 边框盒的尺寸、 计算值形式的尺寸属性 等。

3.4. 新的列尺寸值:stretch、min-content、max-content 和 fit-content 值

名称: column-width
新值: <box-size>
计算值: 与指定值相同,其中 <length-percentage> 值会被计算
动画类型: 按计算值类型

当用作 column-width 的值时, 这些新关键字指定最佳列宽:

stretch
将最佳列宽指定为多列容器的拉伸适应行内尺寸。
min-content
将最佳列宽指定为多列容器内容的最小内容行内尺寸。
max-content
将最佳列宽指定为多列容器内容的最大内容行内尺寸。
fit-content
将最佳列宽指定为 min(最大内容行内尺寸, max(最小内容行内尺寸, 拉伸适应行内尺寸))。

注: 列宽绝不会因列而异。 当列宽由多列容器的内容决定 (如上述关键字的情况)时, 会考虑其全部内容, 并由所有列共享计算所得的宽度。

4. 外在尺寸确定

外在尺寸计算 根据元素的上下文确定尺寸, 而不考虑其内容。

4.1. 百分比尺寸计算

百分比相对于盒的包含 块指定盒的尺寸。

例如,在以下标记中:
<article style="height: 60em">
  <figure style="height: 50%;">
    <img style="height: 50%;">
  </figure>
</article>

有关当包含块的尺寸依赖于其内容尺寸时 如何解析百分比的详细信息,请参见 § 5.2.1 百分比尺寸盒的内在贡献。

测试

4.2. 拉伸适应尺寸计算:填充包含块

拉伸适应尺寸计算尝试将盒的使用尺寸 设置为所需长度, 以使其主盒的外部尺寸 尽可能接近填满包含块, 同时仍遵守 min-height/min-width/max-height/max-width 所施加的约束。

如果用于百分比尺寸能够解析为确定值的轴

将外边距盒的尺寸设置为恰好填满包含块, 并将 auto 外边距视为零。 (如果这会使内部 尺寸为负, 则改为调整外边距盒的尺寸,使内部尺寸为零。)

对于形成独立格式化上下文的流内块级盒, 使用行盒可用的空间 (即排除浮动), 代替包含块的行内尺寸。

对于流内块级盒,在解析块 轴尺寸时: 如果百分比所相对解析的祖先元素没有块起始边框或内边距, 且它不是独立格式化上下文, 则在计算此尺寸时将元素的块起始外边距视为零。 对块结束 外边距也以类似方式进行相同处理。

注: 这模拟了外边距 与父元素外边距折叠的效果。 它实际上并不会抑制这些外边距, 因此,如果有任何因素阻止元素实际与其父元素发生折叠, 则拉伸适应 尺寸实际上可能过大, 从而无法完美适应父元素。

否则

在首选尺寸属性中, 表现为 auto。 在最小尺寸 属性中, 表现为 0。 在最大尺寸 属性中, 表现为 none。

例如,给定以下表示两个块盒的 HTML:
<div class="parent">
  <div class="child">text</div>
</div>

在以下情况下, 子盒的外部高度 将恰好与父盒的高度(200px)匹配, 但其内部高度将少 20px,以计入其外边距。

.parent { height: 200px; border: solid; }
.child { height: stretch; margin: 10px; }

另一方面, 在这种情况下,我们可以假定子元素的外边距会与父元素的外边距折叠, 因此内部盒的高度将为 200px, 恰好填满父元素。

.outer { height: 200px; margin: 0; }
.inner { height: stretch; margin: 10px; }

(顶部外边距实际上会发生折叠, 但底部外边距不会折叠, 因为盒的底部外边距不会与具有非 auto 高度的父元素的底部外边距相邻, 参见 CSS 2 § 8.3.1 外边距折叠。 幸运的是,溢出的底部外边距不会产生任何可见影响。)

类似地,width: stretch 会使盒填满其容器, 其宽度比 "some more text" 的宽度少 20px (由于 10px 的外边距):
<div class="parent">
  <div class="child">text</div>
</div>
some more text
.parent { float: left; margin: 0; }
.child { width: stretch; margin: 10px; }
另一方面, 在此示例中,容器的高度是不确定的, 这会使子元素上的百分比高度表现为 auto, 因此 height: stretch 同样表现为 auto。
.parent { height: auto; margin: 0; }
.child { height: stretch; margin: 10px; }
测试

注: 拉伸适应尺寸通常(但不总是) 等价于 stretch 自身对齐。 例如,在多行弹性布局中, 拉伸适应尺寸直接相对于包含块解析, 并将该尺寸贡献给行的交叉尺寸——而 stretch 则贡献适应内容 尺寸——然后最终相对于行的交叉尺寸进行解析。

5. 内在尺寸确定

内在尺寸计算 根据元素的内容确定尺寸, 而不考虑其上下文。

测试

5.1. 内在尺寸

盒在每个轴上的最小内容尺寸 是这样一种情况下它所具有的尺寸: 将其视为一个浮动,并在该轴上给予 auto 首选尺寸 (且该轴上没有最小或最大尺寸), 并且其包含块在该轴上的尺寸为零。 (换言之,这是按“收缩适应”确定尺寸时所具有的最小尺寸。)

盒在每个轴上的最大内容尺寸 是这样一种情况下它所具有的尺寸: 将其视为一个浮动,并在该轴上给予 auto 首选尺寸 (且该轴上没有最小或最大尺寸), 并且其包含块在该轴上的尺寸为无限。 (换言之,这是按“收缩适应”确定尺寸时所具有的最大尺寸。)

最小内容尺寸和最大内容尺寸 统称为 内在尺寸。

注: 当盒具有首选宽高比时, 另一维度上的尺寸约束会传递过来, 并可能影响当前所考虑维度上的 auto 尺寸。 参见 CSS2§10。

本规范未定义如何确定浮动的尺寸。 请参见 [CSS2]。 不过,没有自然尺寸的 替换元素的内在尺寸 定义如下:

如果它具有非退化的首选宽高比:
对于最小内容尺寸, 使用零。

对于最大内容尺寸:

如果它没有首选宽高比:
对于最小内容尺寸 和最大内容尺寸:
  • 如果盒在该维度上的最小尺寸(min-width/min-height)的计算值 为 <length>, 则使用该尺寸。

    注: 这种可由作者控制的行为 得益于最小尺寸属性新增的 auto 值。 这被认为是一种更好的行为, 但目前尚不清楚它是否与 Web 兼容, 因此如果出现任何问题,请向 CSSWG 发送反馈。

  • 否则, 根据需要,对宽度使用 300px, 和/或对高度使用 150px。

    注: 这并不意味着存在宽高比。

由于一个块级或行内级替换元素, 当其 height 或 width 表现为 auto时, 实际上被定义为使用其最大内容尺寸 (CSS2§10.3.2), 因此本规范将上述规则 应用于这样一个此前未定义的情况: 替换元素的 height 和 width 都 表现为 auto。

注: 本规范未定义如何 确定 浮动的尺寸。 请参见 [CSS2]、 与该显示类型相关的 CSS 规范, 和/或现有实现 以获取更多详细信息。 未来的规范将详细定义这一点, 并取代 CSS2 中现有的“定义”, 无论它目前多么有限。


尽管 HTML 的 <input type=text> 和 <textarea> 等文本输入控件的 auto 尺寸 通常是固定尺寸, 但此类元素的内容可用于确定基于内容的内在尺寸, 就像非替换块容器一样。 因此,min-content 和 max-content 这两个 尺寸属性关键字 对于在其盒内将值渲染为文本的表单控件, 表示基于内容的尺寸, 从而允许此类控件像普通非替换元素一样 根据其可见内容调整尺寸。

在这种情况下,内容被定义为输入控件的值 (对于 textarea, 是原始值; 对于 input, 是值), 可能会将其转换为更易读和/或本地化的显示格式, 然后将其视为输入控件的子文本 序列, 并且只在输入控件实际允许换行的位置 允许软换行机会 (无论这是由 CSS 属性还是其他 UA 内部约束决定)。 如果输入控件指定了要覆盖显示在其值显示区域中的占位符文本, 则在计算基于内容的尺寸时也会测量该文本——无论占位符文本当前是否可见。 (因此,输入控件基于内容的内在尺寸 是适应占位符文本所需尺寸与适应值所需尺寸中的较大者。)

UA 可以对表单控件的 最小内容和最大内容尺寸 强制设置最小值 (例如容纳一个零宽字符所需的尺寸, 或触摸目标的最小可用尺寸), 以确保为插入符留出足够空间, 并以其他方式维持表单控件的可用性。

注: 这可能会扩展到 iframe 或其他包含内容的替换元素 (参见讨论), 但文本输入是一个重要用例; 而且由于其位于文档内部, 它带来的额外复杂性最少。

测试

5.2. 内在贡献

盒在每个轴上的最小内容贡献/最大内容贡献 是一个假想的 auto 尺寸浮动的内容盒尺寸, 该浮动仅包含该盒, 且该假想浮动的包含块尺寸分别为零/无限。

注: 本规范并未精确定义如何 确定这些尺寸。 请参见 [CSS2]、 与该显示类型相关的 CSS 规范、 处理百分比的规则(下文), 和/或现有实现 以获取更多详细信息。

测试

为此,stretch 自身对齐和拉伸适应尺寸计算 (当它们能够在外在上解析时) 会像可解析百分比一样被视为确定的。

5.2.1. 百分比尺寸盒的内在贡献

有时,百分比尺寸盒的包含 块尺寸 依赖于该盒自身的内在尺寸贡献, 从而形成循环依赖。 在计算这种盒的内在尺寸贡献时 (包括任何基于内容的自动最小尺寸计算), 相对于与内在尺寸贡献相同轴上的尺寸 进行解析的百分比值 (即循环百分比尺寸) 会采用特殊方式进行解析:

  1. 如果盒是非替换的, 则任何最大尺寸属性或首选尺寸属性 (width/max-width/height/max-height) 如果指定为一个包含百分比的表达式 (例如 10% 或 calc(10px + 0%)), 且该百分比是循环的, 则整个值 仅在计算盒的内在尺寸贡献时 被视为该属性的初始值。 例如,对于指定了 width: calc(20px + 50%) 的盒, 其最大内容贡献会按其 width 为 auto 的方式计算。 (不过,在盒本身的实际尺寸计算过程中, 仍会照常考虑该百分比;见下文。)
  2. 同样,如果盒是替换的, 则任何最大尺寸属性或首选尺寸属性 如果指定为一个包含百分比的表达式, 且该百分比是循环的, 则整个值 仅在计算盒的最大内容贡献时 被视为该属性的初始值。
  3. 如果盒是替换的, 则任何最大尺寸属性或首选尺寸属性 (width/max-width/height/max-height) 的值中的循环百分比, 在计算相应轴上的最小内容贡献时, 相对于零进行解析。 (有关这适用于 HTML 中哪些元素的列表,请参见 § 5.2.2 可压缩的替换元素。) 如果盒还具有首选宽高比, 则此最小内容贡献以下限 从另一轴通过首选宽高比传递而来的任何 <length-percentage> 最小尺寸为准——其中任何此类百分比都相对于零解析。

    我们是否应该在 传递百分比之前,先让它们相对于其包含块而不是零进行解析?参见 讨论。

    UA 还可以基于 UI 考虑进一步限制最小内容贡献的下限, 例如确保某些 UI 元素保持可见 (例如 select 上的下拉箭头)。

    注: 与往常一样,最小内容 贡献 也会以其自身轴上的最小尺寸作为下限。

    此规则也适用于计算 基于内容的自动最小尺寸 或其相应的尺寸贡献, 从而得到一个确定的“指定尺寸建议”。

    测试
    例如, 一个 input 被指定为 width: calc(50% + 50px) 时, 其最小内容贡献为 50px, 再加上任何水平外边距/边框/内边距。
  4. 对于最小尺寸 属性, 以及外边距和内边距 (以及沟槽), 在确定内在尺寸贡献时, 循环百分比相对于零进行解析。
测试
循环百分比内在尺寸贡献规则摘要(如上)
元素类型 替换 非替换
贡献类型 最小内容 最大内容 最小内容 最大内容
最小尺寸 & 外边距/内边距 零ᵈ 零ᵈ 零ᵈ 零ᵈ
最大 & 首选 尺寸 零ᶜ 初始值ᵇ 初始值ᵃ 初始值ᵃ

然后,除非另有规定, 在计算包含块的内容的使用尺寸和位置时:

注: 这些规则规定了此前未定义的循环情况行为, 对应于 CSS2§10.2、 CSS2§8.3 和 CSS2§8.4。 另请注意,对于 CSS2 中未描述的布局模式 (例如弹性布局), CSS2§10.5 中的行为已由各自的规范取代。

例如,在以下标记中:
<article style="width: min-content">
  <aside style="width: 50%;">
  LOOOOOOOOOOOOOOOOOOOONG
  </aside>
</article>

在计算外部 <article> 的宽度时, 内部 <aside> 表现为 width: auto, 因此 <article> 将自身宽度设置为该长单词的宽度。 不过,由于 <article> 的宽度并不依赖“真实”布局, 因此在解析 <aside> 时,它被视为确定的, 而 <aside> 的宽度解析为 <article> 宽度的一半。

在此示例中,
<article style="height:auto">
  <aside style="height: 50%;">
    <div class=block style="height: 150px;"></div>
  </aside>
  <section style="height: 30px;"></section>
</article>

由于块级元素上的百分比块尺寸 (在此例中为 height) 被定义为在基于内容确定尺寸的包含块中不进行解析, 因此 <aside> 上的百分比高度会被忽略, 即其行为与指定 auto 完全相同。

当 min-height 是内在尺寸时, 仍允许百分比相对于确定的 height 进行解析 仍是一个未决问题。 (CSS2 有一条关于“高度依赖于内容”的一般性陈述, 从技术上讲这里确实如此, 尽管 CSS2 当时还没有用于 min-height 的基于内容的关键字。 由于这是新增行为,我们认为可以采用不同的行为。)

以下示例说明块轴百分比如何相对于尺寸依赖其内容的包含块进行解析。

<article style="height:100px; min-height: min-content;">
  <aside style="height: 50%;">
    <div style="height: 150px;"></div>
  </aside>
  <section style="height: 30px;"></section>
</article>

<article> 的初始高度按指定为 100px, 这会使 <aside> 在解析其百分比时高度为 50px。 然而,我们必须计算 min-height, 方法是用它替换 height。 这会使 <aside> 上的百分比表现为 auto, 因此 <aside> 最终高度为 150px。 内容总高度因此为 180px。 这大于指定的 100px 高度, 所以 <article> 会调整为 180px 高。

然后,由于该百分比最初能够相对于(100px)高度进行解析, 现在它会相对于 180px 高度进行解析, 因此 <aside> 最终高度为 90px。

<article style="height:auto; min-height: min-content;">
  <aside style="height: 50%;">
    <div class=block style="height: 150px;"></div>
  </aside>
  <section style="height: 30px;"></section>
</article>

在这种情况下,<aside> 上的百分比通常不会解析, 因为包含块的高度是 auto (因此依赖于其内容的尺寸)。 相反,它会表现为 auto, 使 <aside> 的高度为 150px, 并使 <article> 的初始高度为 180px。 min-height 不会改变这一点; height: min-content; 的行为类似于 height: auto;, 并产生相同的尺寸。

<article style="height:100px; min-height: min-content;">
  <aside style="height: 200%;">
    <div style="height: 150px;"></div>
  </aside>
  <section style="height: 30px;"></section>
</article>

这是第一个代码块的变体, 并遵循类似的过程; <aside> 最初希望计算为 200px 高 (即 100px 包含块高度的 200%)。 当我们计算 min-height 的影响时, 该百分比表现为 auto, 使其高度变为 150px, 并使包含块总的 min-content 高度 为 180px。 由于这大于 100px, <article> 被限制为 180px, 随后百分比相对于这个新高度进行解析, <aside> 最终高度为 360px, 并溢出 <article>

5.2.2. 可压缩的替换元素

除了 HTML§14.4 [HTML] 中列出的替换元素之外, 以下 HTML 元素在用于上述百分比尺寸替换元素 规则时, 也被视为替换 元素, 当其 width/height 或 max-width/max-height 使用循环百分比尺寸表示时, 可以压缩其最小内容贡献:

在 问题 6348 中跟踪将此行为应用于 max-width/height 的 Web 兼容性和实现进展。[问题 #6348]

变更

最近的变更

自 2021年12月17日工作 草案以来的变更包括:

自 2020年12月18日工作 草案以来的变更包括:

自 2020年12月18日工作 草案以来的变更包括:

自 2019年5月22日工作 草案以来的主要变更包括:

自 2018年3月4日工作 草案以来的主要变更包括:

自 2017年2月7日 工作草案以来的主要变更包括:

自 CSS 第 2 级以来的新增内容

除了为各种自动和基于内容的尺寸算法 增加大量详细说明之外, 自 [CSS2] 以来还新增了以下特性:

致谢

特别感谢 L. David Baron、 Aaron Gustafson、 Daniel Holbert 和 Mats Palmgren 对本模块所作的贡献。

隐私注意事项

为了支持自动布局, CSS 会调整盒的尺寸以适应其内容。 结合各种 [DOM] 和 [CSSOM] API, 这些 API 可以将盒的尺寸返回给脚本, 这可能会暴露有关这些内容的信息。 不过,通过检查 DOM 中的内容, 可以比通过盒尺寸间接获取更直接、更容易地获得这些信息。 无法检查其内容的容器 (例如跨源 iframe) 也不会向外部页面暴露尺寸信息, 除非替换元素(例如图像) 暴露其自然尺寸和/或宽高比。

安全注意事项

尚未报告本规范存在新的安全注意事项。

一致性

文档约定

一致性要求通过描述性断言 与 RFC 2119 术语相结合来表达。本 文档规范性部分中的关键词“必须”、 “不得”、“要求”、“应”、“不应”、“应该”、“不应该”、 “建议”、“可以”和“可选”应按照 RFC 2119 中的说明进行解释。 不过,为了提高可读性,本规范中这些词并不全部以 大写字母形式出现。

除明确标记为非规范性的章节、 示例和注释外,本规范的所有文本均为规范性内容。[RFC2119]

本规范中的示例以“例如”一词引入, 或使用 class="example" 与规范性文本分隔, 如下所示:

这是一个信息性示例的例子。

信息性注释以“注”一词开头,并使用 class="note" 与规范性文本分隔,如下所示:

注:这是一条信息性注释。

建议框是经过样式设置以引起特别注意的规范性章节,并使用 <strong class="advisement"> 与其他规范性文本分隔,如下所示: UA 必须提供可访问的替代方案。

测试

与本规范内容相关的测试 可以记录在像这样的“测试”块中。 任何此类块均为非规范性内容。


一致性类别

与本规范的一致性 针对以下三个一致性类别定义:

样式表
一个 CSS 样式表。
渲染器
一个解释样式表语义并渲染 使用这些样式表的文档的 UA。
创作工具
一个编写样式表的 UA。

如果一个样式表中所有使用本模块所定义语法的语句, 根据通用 CSS 语法以及本模块中定义的每项 特性的各自语法都是有效的, 则该样式表符合本规范。

如果一个渲染器除了按照 适用规范中的定义解释样式表之外,还通过正确解析 本规范定义的所有特性并据此渲染文档来支持这些特性, 则该渲染器符合本规范。不过,如果 UA 因设备限制而无法正确渲染文档, 并不会使该 UA 不符合规范。(例如,不 要求 UA 在单色显示器上渲染颜色。)

如果一个创作工具编写的样式表在语法上符合 通用 CSS 语法以及本模块中每项特性的各自语法, 并满足本模块中所述样式表的所有其他一致性要求, 则该创作工具符合本规范。

部分实现

为了让作者能够利用向前兼容的解析规则来 指定回退值,CSS 渲染器必须 将其没有可用支持级别的任何 at 规则、属性、属性值、关键字 和其他语法构造视为无效(并在适当情况下 忽略)。特别是,用户代理不得在单个 多值属性声明中选择性地忽略不支持的组件值而接受受支持的值: 如果任何值被视为无效 (不支持的值必须如此),CSS 要求忽略整个声明。

不稳定和专有特性的实现

为了避免与未来稳定的 CSS 特性发生冲突, CSSWG 建议在实现 CSS 的不稳定特性和专有扩展时遵循最佳实践。

非实验性实现

一旦规范达到候选推荐标准阶段, 就可以有非实验性实现,且实现者应该 对任何能够证明已按照规范正确实现的 CR 级特性 发布无前缀实现。

为了建立并维护 CSS 在各实现之间的互操作性, CSS 工作组要求非实验性的 CSS 渲染器在发布任何 CSS 特性的无前缀实现之前, 向 W3C 提交实现报告(以及必要时用于该实现报告的 测试用例)。提交给 W3C 的测试用例 须经 CSS 工作组审查和修正。

有关提交测试用例和实现报告的更多信息, 可在 CSS 工作组网站 https://www.w3.org/Style/CSS/Test/ 上找到。 问题应发送至 public-css-testsuite@w3.org 邮件列表。

索引

本规范定义的 术语

通过引用定义的 术语

参考资料

规范性参考资料

[CSS-ALIGN-3]
Elika Etemad; Tab Atkins Jr.. CSS 盒对齐模块 第 3 级。2026年1月30日。WD。URL:https://www.w3.org/TR/css-align-3/
[CSS-BORDERS-4]
Elika Etemad; et al. CSS 边框与盒装饰 模块第 4 级。2025年12月16日。WD。URL:https://www.w3.org/TR/css-borders-4/
[CSS-BOX-4]
Elika Etemad. CSS 盒模型模块第 4 级。2024年8月4日。WD。URL:https://www.w3.org/TR/css-box-4/
[CSS-CASCADE-5]
Elika Etemad; Miriam Suzanne; Tab Atkins Jr.. CSS 层叠与继承第 5 级。2022年1月13日。CR。URL:https://www.w3.org/TR/css-cascade-5/
[CSS-CONTAIN-2]
Tab Atkins Jr.; Florian Rivoal; Vladimir Levin. CSS 遏制模块第 2 级。2022年9月17日。WD。URL:https://www.w3.org/TR/css-contain-2/
[CSS-DISPLAY-3]
Tab Atkins Jr.; Elika Etemad. CSS 显示模块第 3 级。2026年6月5日。CRD。URL:https://www.w3.org/TR/css-display-3/
[CSS-DISPLAY-4]
Elika Etemad; Tab Atkins Jr.. CSS 显示模块第 4 级。2025年11月6日。WD。URL:https://www.w3.org/TR/css-display-4/
[CSS-FLEXBOX-1]
Elika Etemad; Tab Atkins Jr.; Rossen Atanassov. CSS 弹性盒布局模块第 1 级。2025年10月14日。CRD。URL:https://www.w3.org/TR/css-flexbox-1/
[CSS-GAPS-1]
Kevin Babbitt. CSS 间隙模块第 1 级。2026年6月24日。WD。URL:https://www.w3.org/TR/css-gaps-1/
[CSS-IMAGES-3]
Tab Atkins Jr.; Elika Etemad; Lea Verou. CSS 图像 模块第 3 级。2023年12月18日。CRD。URL:https://www.w3.org/TR/css-images-3/
[CSS-INLINE-3]
Elika Etemad. CSS 行内布局模块第 3 级。2024年12月18日。WD。URL:https://www.w3.org/TR/css-inline-3/
[CSS-MULTICOL-2]
Florian Rivoal; Rachel Andrew. CSS 多列布局 模块第 2 级。2024年12月19日。FPWD。URL:https://www.w3.org/TR/css-multicol-2/
[CSS-SIZING-4]
Tab Atkins Jr.; Elika Etemad; Jen Simmons. CSS 盒 尺寸模块第 4 级。2021年5月20日。WD。URL:https://www.w3.org/TR/css-sizing-4/
[CSS-TEXT-4]
Elika Etemad; et al. CSS 文本模块第 4 级。 2026年8月14日。WD。URL:https://www.w3.org/TR/css-text-4/
[CSS-UI-3]
Tantek Çelik; Florian Rivoal. CSS 基本用户界面 模块第 3 级(CSS3 UI)。2026年4月7日。REC。URL:https://www.w3.org/TR/css-ui-3/
[CSS-VALUES-3]
Tab Atkins Jr.; Elika Etemad. CSS 值和单位 模块第 3 级。2024年3月22日。CRD。URL:https://www.w3.org/TR/css-values-3/
[CSS-VALUES-4]
Tab Atkins Jr.; Elika Etemad. CSS 值和单位 模块第 4 级。2024年3月12日。WD。URL:https://www.w3.org/TR/css-values-4/
[CSS-WRITING-MODES-3]
Elika Etemad; Koji Ishii. CSS 书写模式第 3 级。2019年12月10日。REC。URL:https://www.w3.org/TR/css-writing-modes-3/
[CSS-WRITING-MODES-4]
Elika Etemad; Koji Ishii. CSS 书写模式第 4 级。2019年7月30日。CR。URL:https://www.w3.org/TR/css-writing-modes-4/
[CSS2]
Bert Bos; et al. 层叠样式表第 2 级修订版 1(CSS 2.1)规范。2011年6月7日。REC。URL:https://www.w3.org/TR/CSS2/
[CSS3COL]
Florian Rivoal; Rachel Andrew. CSS 多列布局 模块第 1 级。2024年5月16日。CR。URL:https://www.w3.org/TR/css-multicol-1/
[CSSOM]
Daniel Glazman; Emilio Cobos Álvarez. CSS 对象模型 (CSSOM)。2021年8月26日。WD。URL:https://www.w3.org/TR/cssom-1/
[HTML]
Anne van Kesteren; et al. HTML 标准。 现行标准。URL:https://html.spec.whatwg.org/multipage/
[RFC2119]
S. Bradner. 用于 RFC 中表示 要求级别的关键词。1997年3月。当前最佳实践。URL:https://datatracker.ietf.org/doc/html/rfc2119

非规范性参考资料

[CSS-GRID-2]
Tab Atkins Jr.; et al. CSS 网格布局模块第 2 级。2025年3月26日。CRD。URL:https://www.w3.org/TR/css-grid-2/
[CSS-LOGICAL-1]
Elika Etemad; Rossen Atanassov. CSS 逻辑属性 和值模块第 1 级。2025年12月4日。WD。URL:https://www.w3.org/TR/css-logical-1/
[DOM]
Anne van Kesteren. DOM 标准。现行标准。 URL:https://dom.spec.whatwg.org/

属性索引

名称 值 初始值 适用于 继承 百分比 动画类型 规范顺序 计算值 逻辑属性组
block-size auto | <box-size> auto 除非替换行内元素外的所有元素 否 相对于包含块的宽度/高度 按计算值类型,并递归进入 fit-content() 按语法 与指定值相同,其中 <length-percentage> 值会被计算 size
box-sizing content-box | border-box content-box 所有接受 width 或 height 的元素 否 不适用 离散 按语法 指定的关键字
height auto | <box-size> auto 除非替换行内元素外的所有元素 否 相对于包含块的宽度/高度 按计算值类型,并递归进入 fit-content() 按语法 与指定值相同,其中 <length-percentage> 值会被计算 size
inline-size auto | <box-size> auto 除非替换行内元素外的所有元素 否 相对于包含块的宽度/高度 按计算值类型,并递归进入 fit-content() 按语法 与指定值相同,其中 <length-percentage> 值会被计算 size
max-block-size none | <box-size> none 所有接受 width 或 height 的元素 否 相对于包含块的宽度/高度 按计算值,并递归进入 fit-content() 按语法 与指定值相同,其中 <length-percentage> 值会被计算 max-size
max-height none | <box-size> none 所有接受 width 或 height 的元素 否 相对于包含块的宽度/高度 按计算值,并递归进入 fit-content() 按语法 与指定值相同,其中 <length-percentage> 值会被计算 max-size
max-inline-size none | <box-size> none 所有接受 width 或 height 的元素 否 相对于包含块的宽度/高度 按计算值,并递归进入 fit-content() 按语法 与指定值相同,其中 <length-percentage> 值会被计算 max-size
max-width none | <box-size> none 所有接受 width 或 height 的元素 否 相对于包含块的宽度/高度 按计算值,并递归进入 fit-content() 按语法 与指定值相同,其中 <length-percentage> 值会被计算 max-size
min-block-size auto | <box-size> auto 所有接受 width 或 height 的元素 否 相对于包含块的宽度/高度 按计算值,并递归进入 fit-content() 按语法 与指定值相同,其中 <length-percentage> 值会被计算 min-size
min-height auto | <box-size> auto 所有接受 width 或 height 的元素 否 相对于包含块的宽度/高度 按计算值,并递归进入 fit-content() 按语法 与指定值相同,其中 <length-percentage> 值会被计算 min-size
min-inline-size auto | <box-size> auto 所有接受 width 或 height 的元素 否 相对于包含块的宽度/高度 按计算值,并递归进入 fit-content() 按语法 与指定值相同,其中 <length-percentage> 值会被计算 min-size
min-width auto | <box-size> auto 所有接受 width 或 height 的元素 否 相对于包含块的宽度/高度 按计算值,并递归进入 fit-content() 按语法 与指定值相同,其中 <length-percentage> 值会被计算 min-size
width auto | <box-size> auto 除非替换行内元素外的所有元素 否 相对于包含块的宽度/高度 按计算值类型,并递归进入 fit-content() 按语法 与指定值相同,其中 <length-percentage> 值会被计算 size

问题索引

本规范需要插图!参见问题。↵
用对新术语 自动尺寸的引用替换本节。↵
我们是否应该在传递百分比之前,先让它们相对于其包含块而不是零进行解析? 参见讨论。↵
当 min-height 是内在尺寸时,仍允许百分比相对于确定的 height 进行解析仍是一个未决问题。 (CSS2 有一条关于“高度依赖于内容”的一般性陈述, 从技术上讲这里确实如此, 尽管 CSS2 当时还没有用于 min-height 的基于内容的关键字。 由于这是新增行为,我们认为可以采用不同的行为。)↵
在 问题 6348 中跟踪将此行为应用于 max-width/height 的 Web 兼容性和实现进展。[问题 #6348] ↵