前端进阶之旅前端进阶之旅
  • 基础篇HTML/CSS/JS 打底
  • 进阶篇原理与工程化
  • 高频篇面试最常问的那批
  • 精选篇按模块收敛的总结
  • 手写篇常考代码手写实现
  • 面经篇真实面试问题复盘
  • AI 篇NEWAI 时代的前端考点
  • 历年面经NEW按年份追踪真实考点
  • 每日一题每天一道,攒手感
  • 专项自测100 题快速查漏
  • 小程序题库小程序专项刷题
  • 算法题库NEW在线编码即时判题
  • 知识卡片NEW碎片时间过考点
  • 面试题大全常见问题解析
  • AI 答疑NEW随时提问,即时解析
  • AI 模拟面试NEW模拟真实面试 + 报告
  • AI 定制路线NEW按你的简历现排
  • AI 知识地图NEW串起全站知识点
  • 原理篇React / Vue 源码拆解
  • HTTP从报文一路讲到 HTTPS
  • 浏览器渲染、事件循环、进程
  • 计算机基础Linux、网络、操作系统
  • 设计模式23 种模式怎么用
  • Node学习指南从环境搭建到服务端
  • NPM工作流script、依赖与发布
  • Docker容器化部署上手
  • Canvas图形与动画实战
  • 前端系统进阶学习大型项目工程化
  • 前端综合文章长期沉淀的实践文
  • 思维导图知识点全景图
  • 学习路线按图索骥不跑偏
  • AI 热点NEWAI 每日动态
  • 公众号动态公众号历史文章
  • 博客动态站长的技术博客
  • 开发者导航常用工具与文档站
  • 基础篇HTML/CSS/JS 打底
  • 进阶篇原理与工程化
  • 高频篇面试最常问的那批
  • 精选篇按模块收敛的总结
  • 手写篇常考代码手写实现
  • 面经篇真实面试问题复盘
  • AI 篇NEWAI 时代的前端考点
  • 历年面经NEW按年份追踪真实考点
  • 每日一题每天一道,攒手感
  • 专项自测100 题快速查漏
  • 小程序题库小程序专项刷题
  • 算法题库NEW在线编码即时判题
  • 知识卡片NEW碎片时间过考点
  • 面试题大全常见问题解析
  • AI 答疑NEW随时提问,即时解析
  • AI 模拟面试NEW模拟真实面试 + 报告
  • AI 定制路线NEW按你的简历现排
  • AI 知识地图NEW串起全站知识点
  • 原理篇React / Vue 源码拆解
  • HTTP从报文一路讲到 HTTPS
  • 浏览器渲染、事件循环、进程
  • 计算机基础Linux、网络、操作系统
  • 设计模式23 种模式怎么用
  • Node学习指南从环境搭建到服务端
  • NPM工作流script、依赖与发布
  • Docker容器化部署上手
  • Canvas图形与动画实战
  • 前端系统进阶学习大型项目工程化
  • 前端综合文章长期沉淀的实践文
  • 思维导图知识点全景图
  • 学习路线按图索骥不跑偏
  • AI 热点NEWAI 每日动态
  • 公众号动态公众号历史文章
  • 博客动态站长的技术博客
  • 开发者导航常用工具与文档站
首页程序员面试题库box-sizing content-box border-box
CSCSS盒模型与排版

CSS 中 content-box 与 border-box 两种盒模型在宽度计算上有什么区别,何时应优先选择 border-box?

content-box 的 width 只计算内容区,border-box 的 width 包含 padding 与 border。响应式布局优先用 border-box,避免加法误差。

前端进阶之旅 · 一题精讲更新于 2026.09.05
CSS#盒模型与排版
先看核心答案
理解线索

盒模型宽度计算口径

  1. content-boxwidth 仅内容区,实际宽度需加 padding 和 border
  2. border-boxwidth 含 padding 和 border,内容区自动收缩
  3. 默认与重置默认是 content-box,可全局设置 border-box

margin 永远不计入 width,两种盒模型都不包含 margin。

核心回答

先记住这个答案

默认 content-box 下,设置的 width 是内容宽度,实际渲染宽度需加上 padding 和 border;而 border-box 的 width 已包含这两者,内容区自动收缩。当容器使用百分比宽度并需要内边距或边框时,border-box 能保证总宽度等于设定值,避免因加法导致换行或溢出。因此栅格布局和通用重置常全局启用 border-box。

  • content-box 的 width 不含 padding 和 border
  • border-box 的 width 包含 padding 和 border
  • 百分比宽度布局应优先用 border-box

两种盒模型的宽度计算机制

在 content-box 下,CSS 的 width 属性指定的是内容区宽度。假设元素 width: 200px,padding-left/right 各 20px,border 左右各 5px,则实际渲染的总宽度是 200 + 202 + 52 = 250px。内容区保持 200px,padding 和 border 向外扩展,导致元素实际占用的空间大于设定值。

border-box 则把 width 定义为包含 padding 和 border 的总宽度。同样 width: 200px,padding 和 border 合计 50px,内容区实际只有 150px。也就是说,设定宽度固定时,padding 和 border 会向内挤压内容区,内容区最小为 0,不能为负。

百分比宽度分栏场景

一个典型的栅格系统,父容器宽度 1200px,需要三栏布局,每栏宽度设为 33.333%,并设置左右 padding 20px 和 border 1px。若使用 content-box,每栏总宽度为 33.333% * 1200 + 40 + 2 = 400 + 42 = 442px,三栏总宽超过 1200px,导致换行。改用 border-box,每栏总宽为 400px,三栏正好排列。

处理方式是将盒模型切换为 border-box,然后在每栏的样式里正常写 width 和 padding。这样百分比宽度始终等于父容器宽度的比例,内边距和边框被包含在内,无需手动用 calc 调整。这也是现代 CSS 重置中常用 * { box-sizing: border-box; } 的原因。

适用边界与副作用

border-box 并非适用于所有场景。当使用 position: relative 或 absolute 时,若需要用 top/left 等属性微调元素位置,content-box 能让偏移量相对于内容区计算,不受 padding 和 border 变化影响,这可能更适合某些精细定位。

另外,如果元素设置了 min-width 或 max-width,这些约束在 border-box 下同样作用于包含 padding/border 的宽度。但若依赖内容区宽度撑开自适应,content-box 的行为更直观。切换为 border-box 后,padding 会挤占内容区,可能破坏基于内容尺寸的自适应布局,此时需权衡或局部重置。

回答前,多想一步

容易答错的地方

认为 border-box 包含 margin
实际上 margin 从不被计入 width,border-box 只包含 padding 和 border。若需要外边距也参与计算,必须使用 margin 本身或使用数学计算,不能依靠 box-sizing。
所有元素都适用 border-box
对没有显式 width 的块级元素,width 默认为 auto,此时 border-box 不改变其填充父容器的行为。只有设置了明确宽度或百分比宽度时,差异才有实际影响。
试着用自己的话回答

面试官还会怎么问?

为什么浏览器默认表单元素使用 border-box?

因为原生控件如 button、select 等,padding 和 border 样式差异大,使用 border-box 更容易固定按钮尺寸,避免不同样式导致宽度跳动。这也是浏览器默认样式表的行为。

全局设置 border-box 会影响 width: auto 的元素吗?

不会。width: auto 时元素自动填满父容器剩余空间,padding 和 border 减去后内容区随之调整,实际渲染宽度仍为父容器宽度,与 box-sizing 无关。

如何在指定场景临时切换回 content-box?

给单个元素设置 box-sizing: content-box 即可覆盖全局设置。但需注意继承问题,可对需要精确内容宽度的组件局部声明,避免使用通配符造成不必要的副作用。

从一道题,走向一组知识

把知识连起来

盒模型与排版

CSS 中触发 BFC 的常见方式有哪些,BFC 对布局有什么实际作用?

同属「盒模型与排版」专题,接着看 BFC 触发方式 作用 overflow 在具体场景中的处理方式。

盒模型与排版

绝对定位元素的包含块是最近的定位祖先吗?请举例说明非定位祖先如何影响其定位。

同属「盒模型与排版」专题,接着看 绝对定位 包含块 定位祖先 在具体场景中的处理方式。

参考资料

  • box-sizing CSS property

示例用于理解所注明的运行环境与边界;延伸学习可结合原文中的更多案例。

本题目录
  1. 先记住这个答案
  2. 两种盒模型的宽度计算机制
  3. 百分比宽度分栏场景
  4. 适用边界与副作用
  5. 容易答错的地方
  6. 面试官还会怎么问
  7. 把知识连起来
读懂,再试着讲出来

先看核心答案,再读代码。最后展开追问,检查自己有没有遗漏边界。

试着回答追问
浏览全部面试题理解原理,也关注真实的使用场景。回到顶部 ↑