CSS 盒模型可视化工具,免费

调整外边距、边框、内边距和内容尺寸,实时查看 CSS 盒模型。

尺寸

内边距(px)

边框(px)

外边距(px)

margin
border
padding
200 × 120

  

使用方法

  1. 输入盒模型值:在输入框或交互式滑块中设置外边距、边框、内边距和内容尺寸。
  2. 查看可视化:经典的嵌套盒图会实时更新 , 外边距(橙色)、边框(黄色)、内边距(绿色)和内容(蓝色),各自清晰标注。
  3. 复制 CSS:点击「复制 CSS」,即可获得当前配置的元素所需的全部盒模型属性。

为什么使用 CSS 盒模型可视化工具?

CSS 盒模型是网页布局最基础的概念之一 , 也是最常见 bug 的来源,尤其是在 box-sizing 值混用、外边距合并和边框尺寸处理时。这款交互式可视化工具让盒模型变得具体可感:您调整数值,立刻看到外边距、边框和内边距如何围绕内容层层堆叠。对于学习、调试和教学 CSS 都必不可少。

功能特性

常见问题

content-box 和 border-box 有什么区别?

使用 content-box(默认)时,width 和 height 只应用于内容区域 , 内边距和边框会额外加到元素总尺寸上。使用 border-box 时,width 和 height 包含内边距和边框,尺寸更加可预测。大多数现代 CSS reset 都会对所有元素应用 box-sizing: border-box。

什么是外边距合并(margin collapse)?

当两个垂直方向的外边距相邻时(相邻 block 元素之间,或父元素与首个/最后一个子元素之间),它们会合并为一个外边距,等于两者中较大的值。在 flex 或 grid 子元素之间、或含内边距/边框的元素上不会发生合并。

如何去除行内元素下方的多余空隙?

行内元素(如 <img>)下方会因 line-height 基线对齐出现一点空隙。可以给该元素加 display: block,或 vertical-align: bottom,或在父元素上设置 font-size: 0。

CSS 盒模型实际定义了什么

CSS 盒模型是网页上每个元素的矩形表示。每个元素有四个同心盒子:内容盒(文本、图像、子元素所在的地方)、padding 盒(内容与边框之间的空间,在可见边界内)、边框盒(在 padding 周围绘制的可见轮廓),以及外边距盒(边框外的透明空间,将此元素与邻居分开)。元素的总可见大小是内容 + padding + 边框;外边距是不可见的但会将其他元素推开。

关键概念是 box-sizing。默认情况下(box-sizing: content-box,CSS 1 规范值),widthheight 属性仅应用于内容盒。如果你设置 width: 200px; padding: 20px; border: 2px solid,总渲染宽度是 200 + 40 + 4 = 244 像素。这违反直觉:「200px 宽」的元素实际占用 244 像素水平空间。box-sizing: border-box 替代方案(CSS 3 中添加)反转了这一点:width 属性是包括 padding 和边框的总可见大小,所以内容区域缩小以适应。border-box 是大多数开发者期望的;通过 Paul Irish 2012 年的「* { box-sizing: border-box }」CSS 重置成为事实上的标准。

理解盒模型很重要,因为布局错误几乎总是追溯到对哪个值应用于哪个盒子的混淆。「为什么我的元素比我设定的更宽?」是 content-box 的惊讶。「为什么我的外边距没有把兄弟元素推下去?」通常是外边距折叠。「为什么 padding-top: 50% 行为怪异?」因为百分比 padding 是相对于父级宽度计算的,不是高度。每个 CSS 开发者都会遇到这些混淆;这个可视化工具让你调整值并实时看到结果盒几何,使它们变得具体。

本工具的幕后运作

交互式图表是一系列嵌套的彩色 div,对应每个盒子(外边距橙色、边框黄色、padding 绿色、内容蓝色)。当你更改输入值时,JavaScript 更新图表 div 的内联 style 属性,以便它们以数字和视觉方式反映值。比例缩放以适应预览区域;绝对像素值会将图表推出屏幕,对于典型输入。

总大小计算取决于 box-sizing 模式。对于 content-box:总宽度 = 内容宽度 + padding-left + padding-right + border-left + border-right。对于 border-box:总宽度 = width 值(padding 和边框从内容区域减去)。当你切换 box-sizing 时,工具同时计算两种模式,所以你可以直接比较。

生成的 CSS 输出使用你的输入作为属性值:box-sizing: border-box; width: 200px; padding: 10px 20px; border: 2px solid; margin: 1rem auto;。将其直接复制到你的样式表并应用匹配的类。没有任何东西离开你的浏览器;一切都在本地 JavaScript 中运行。没有分析,没有后端,没有账户。刷新,状态就消失了。

CSS 盒模型简史

真实世界的工作流

常见陷阱及其含义

隐私:一切都在你的浏览器中运行

CSS 学习和可视化工具有两种风格:运行客户端 JavaScript 的简单 HTML 页面(私密、快速、无需设置)和带保存项目的云编辑器(协作但带隐私权衡)。这个工具是第一种。你输入的值、你的 box-sizing 切换状态、你生成的 CSS:所有都保留在你的浏览器会话中。刷新页面,状态消失,除非你先复制了 CSS。

这里隐私利害关系较低,因为盒模型值很少包含敏感信息。不过,缺乏分析很重要:你可以自由实验,而不必记录你的试错过程。在课堂或企业培训环境中特别有用,让学生或受训者在第三方平台上注册账户是一个摩擦点。这是一个没有后端的单一静态页面,可在任何浏览器中使用,包括锁定的企业机器。

什么时候另一个工具是正确选择

更多常见问题

我应该使用通用 * { box-sizing: border-box } 吗?

对大多数项目来说,是的。Paul Irish 2012 年的提议现在是行业默认,并与大多数开发者期望 width 和 height 的工作方式一致。Bootstrap、Tailwind、Bulma 和 Material UI 等框架都以 border-box 作为默认。从 2026 年开始的现代项目应该在重置顶部设置 *, *::before, *::after { box-sizing: border-box; },并很少需要再考虑 box-sizing。对于 border-box 会搞砸的个别元素,可以对 content-box 进行特定的覆盖。

为什么我的外边距把父级向下推,而不是推兄弟元素?

这是外边距折叠。当子级的顶部外边距与父级的顶部边缘相遇,它们之间没有 padding/边框时,子级的外边距「逃逸」并应用于父级。修复:在父级上添加 padding-top: 1px(任何值都有效)、添加 border: 1px solid transparent、将父级设置为 flex 或 grid 容器(折叠在这些模式下被抑制),或在父级上使用 display: flow-root(一个现代显式「建立新块格式化上下文」规则)。所有这些都阻止外边距穿透折叠。

margin: auto 和 margin: 0 之间有什么区别?

margin: 0 表示无外边距;元素紧贴邻居。margin: auto 表示浏览器计算外边距以分配剩余的水平空间,通常用于居中块元素:margin-left: auto; margin-right: auto; 平均分割剩余空间。margin: auto auto auto auto(或简写 margin: auto)在 flex 容器内水平和垂直居中。在 flex/grid 之外,只有水平 auto 外边距有效。

outline 与 border 有何不同?

Outline 围绕元素绘制,但在盒模型之外:它不添加到元素大小,也不推开邻居。Border 是盒模型的一部分,添加到渲染大小。Outline 通常用于焦点环(:focus-visible 轮廓),你想要一个可见指示器而不移动布局。Border 在线条应该是元素结构一部分时使用。不要在没有提供替代焦点指示器的情况下删除 outline: none;这样做会破坏键盘可访问性。

为什么使用像 margin-inline-start 这样的逻辑属性?

逻辑属性(margin-block-start、padding-inline 等)适应文档的书写方向。在英语(从左到右)中,margin-inline-startmargin-left 相同。在阿拉伯语或希伯来语(从右到左)中,它自动变成 margin-right。对于支持多种语言的网站,逻辑属性使 CSS 国际化自动化。对于仅英语的网站,它们在效果上等同,但更清楚地表明意图:「这个外边距在文本流的起点」而不是「这个外边距在左侧」。

如何创建固定宽高比框?

现代方法是 aspect-ratio CSS 属性:div 上的 aspect-ratio: 16/9 使其高度自动为其宽度的 9/16。在所有现代浏览器中支持(2021+)。遗留技术使用 padding-top 作为百分比:具有 padding-top: 56.25% 的 div 创建 16:9 比例(9/16 = 56.25%)。padding-top 技巧仍然有效,但属性语法更干净。对新代码使用 aspect-ratio;遗留黑客仍然存在于 Tailwind 和其他需要广泛浏览器支持的工具中。

相关工具

CSS 多栏生成器,免费 CSS Grid 生成器,免费 CSS Flexbox 生成器,免费 CSS border-radius 生成器,免费