CSS4不存在,W3C采用模块化演进,如css-sizing-4强化box-sizing语义、contain:size约束渲染边界,关键在显式控制box-sizing与理解contain行为。

CSS 4 规范并不存在 —— 目前(截至 2026 年 8 月)没有正式发布的 CSS Level 4 规范。W3C 的 CSS 标准采用“模块化演进”方式,每个模块(如 css-box-3、css-sizing-4、css-contain-3)独立推进、独立发布,不存在一个统一的“CSS 4”大版本。
所有关于“CSS 4 盒模型改进”的说法,都是对模块草案或误传的混淆。真正影响盒模型行为的关键更新,集中在以下两个已落地或接近推荐标准(CR)的模块中:
box-sizing 的语义强化与继承控制
虽然 box-sizing 自 CSS3 起就已存在,但近年在 css-sizing-4 工作草案中明确了两点实践关键点:
-
box-sizing不继承(这是常被忽略的事实),即使父元素设为border-box,子元素仍默认是content-box - 新增实验性值
inherit(尚未被主流浏览器支持),但当前必须显式重设,不能依赖继承 - 建议始终用通配符重置:
*, *::before, *::after { box-sizing: border-box; }否则表单控件(如input、textarea)或第三方组件可能因保留默认content-box破坏布局
contain: size 对盒模型渲染边界的硬约束
这不是盒模型本身的计算规则变更,但直接影响其实际表现:
- 当元素设置
contain: size,浏览器会强制将该元素的尺寸计算完全隔离,忽略其子内容对自身height的自然撑开(即禁用“块级格式化上下文中的高度自适应”) - 常见副作用:设置了
contain: size的容器,若内部只有浮动或绝对定位子元素,其height会坍缩为 0 —— 这不是 bug,而是规范要求的严格 containment 行为 - 修复方式只能是显式指定
height、min-height,或改用contain: layout(代价是失去尺寸缓存优化)
兼容性与真实风险点
-
box-sizing: border-box在所有现代浏览器中已 100% 支持(包括 IE8+),但部分旧版 Android WebView(4.4 及更早)对::before和::after的通配重置有解析异常 -
contain: size在 Chrome 52+、Firefox 69+、Safari 15.4+ 可用,但 Safari 对包含flex或grid子项的contain: size容器仍有高度计算偏差(2026 年 7 月 WebKit Bug #28312 仍未关闭)
真正需要警惕的,不是“CSS 4 带来了什么新盒模型”,而是:你是否在所有可变尺寸的容器上都显式控制了 box-sizing,以及是否清楚 contain 类属性正在悄悄覆盖盒模型的自然行为。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











