box-sizing: border-box 是响应式布局默认选择,因其使 width: 100% 真实占满父容器,避免 padding/border 导致溢出;content-box 易引发横向滚动、flex/grid 分配异常等问题,全局重置为 * { box-sizing: border-box; } 最可靠。
绝大多数现代响应式项目都把 box-sizing 设为 border-box,不是因为“更先进”,而是它让宽度计算符合直觉:你声明 width: 100%,元素就真占满父容器,不会因 padding 或 border 溢出。而 content-box(浏览器默认)会让 width 只管内容区,加上内边距和边框后实际尺寸变大,在流式布局中极易触发横向滚动或错位。
当父容器用 display: flex 或 display: grid,子项却保留 box-sizing: content-box,尤其在设置 flex: 1 或 grid-template-columns: 1fr 时,子项的 padding 会额外撑开空间,导致等分失效、间隙异常或换行错乱。
flex: 1 的两个子项宽度不均,或右侧出现隐藏滚动条width 和 border-box width 是否一致* { box-sizing: border-box; }

像 Bootstrap、Element Plus 这类库通常已设 box-sizing: border-box,但若项目中混用老代码或未重置的第三方 UI 片段,可能局部回退到 content-box。此时直接在组件内部覆盖容易遗漏,且破坏封装性。
*,
*::before,
*::after {
box-sizing: border-box;
}box-sizing,除非明确知道该组件依赖 content-box 计算(极少见)iframe、canvas 等替换元素不受 * 影响,需单独确认其包裹容器的盒模型从 content-box 改为 border-box 时,如果原有样式同时设置了 width 和 padding,元素视觉尺寸会突然缩小——因为原来 width 是内容宽,现在变成含内边距的总宽。这不是 bug,是预期行为,但常被误认为“样式崩了”。
width: 200px; padding: 10px;,改用 border-box 后想保持外观,应改为 width: 220px; padding: 10px;
--base-width: 200px; + width: calc(var(--base-width) + 2 * 10px);
box-sizing 极其危险,几乎必然引发重排抖动,应绝对避免真正需要纠结 box-sizing 的场景极少;多数问题根源其实是没做全局重置,或者在 flex/grid 容器里混用了不同盒模型的子项。一旦统一,后续开发反而不用再想它。