

新闻资讯
技术学院会,padding 和 border 会让元素变宽,但仅在 box-sizing: content-box 下;设 width: 200px、padding: 15px、border: 2px 时总宽为 234px,侵占父容器空间。
会,但只在默认盒模型(box-sizing: content-box)下——这是浏览器的原始行为。你设 width: 200px,再加 padding: 15px 和 border: 2px,实际总宽度就变成 200 + 15×2 + 2×2 = 234px。这个“多出来的宽度”不是错觉,它真实侵占父容器空间,常导致横向溢出、Flex 项换行、Grid 栅格错位。
它把 width 定义为“最终可见宽度”,即内容区 + padding + border 的总和。设置后,padding 和 border 不再撑大盒子,而是向内压缩内容区域。这对布局控制极其关键:
width: 100% 真正代表“占满父容器”,不会因 padding/border 超出input、textarea)统一设置 width: 100% 时,边框和内边距不再破坏对齐推荐全局启用:
*,
*::before,
*::after {
box-sizing: border-box;
}关键不是“要不要用它们”,而是“怎么算它们”。同一组值,在两种模型下结果截然不同:
width = 内容区;总宽 = width + padding×2 + border-width×2
width = 总宽;内容区宽 = width − padding×2 − border-width×2
例如:width: 300px; padding: 20px; border: 3px solid #333;
即使用了 border-box,仍有几个现实坑点:
box-sizing 不继承,必须显式设置或靠全局重置生效;仅给父元素设了没用box-sizing,需检查 computed styles 确认calc() 动态计算宽度时(如 width: calc(100% - 2rem)),若未配合 border-box,减去的值可能不足以抵消 padding/border 增量outline 不参与盒模型计算,不影响尺寸,但视觉上类似 border,易误判真正要控制总宽度,box-sizing: border-box 不是可选项,而是起点——否则每次加 padding 或 border,都在悄悄改写你的布局契约。