盒子模型是 CSS 布局的核心概念,它将 HTML 元素视为一个矩形盒子,由四个部分组成:
内容(Content):元素的实际内容(如文本、图片)。
内边距(Padding):内容与边框之间的透明区域。
边框(Border):围绕内容和内边距的线条。
外边距(Margin):边框外部的透明区域,用于控制与其他元素的间距。
尺寸计算:width 和 height 仅表示 内容的宽高,总元素尺寸需加上内边距、边框和外边距。
公式:
text复制总宽度 = width + padding-left + padding-right + border-left + border-right + margin-left + margin-right 总高度 = height + padding-top + padding-bottom + border-top + border-bottom + margin-top + margin-bottom
尺寸计算:width 和 height 包含 内容 + 内边距 + 边框,外边距仍单独计算。
触发方式:
在 IE5/6 中默认使用此模式。现代浏览器可通过 CSS 的 box-sizing: border-box 切换至此模式。
box-sizing**box-sizing: content-box(默认)**:
使用标准盒子模型,width/height 仅定义内容尺寸。
**box-sizing: border-box:
使用 IE 盒子模型,width/height 包含内容、内边距和边框的尺寸。
优点**:
更直观的尺寸控制(如直接设置 width: 100% 时,不会因内边距或边框导致溢出)。
常见于全局样式重置:
css复制* { box-sizing: border-box; /* 统一现代项目的盒子模型 */}现象:
垂直方向上相邻的两个块级元素的外边距会合并为一个,取两者中的较大值。
示例:
html运行复制<div style="margin-bottom: 20px"></div><div style="margin-top: 30px"></div><!-- 实际间距为 30px,而非 20+30=50px -->
解决方案:
使用 padding 替代外边距。
使用 Flex/Grid 布局(容器内子元素的外边距不会合并)。
通过 overflow: hidden 或 display: flow-root 创建 BFC(块级格式化上下文)。
内联元素(如 <span>)的 width 和 height 无效,其尺寸由内容决定。
垂直方向的内边距和外边距不会影响布局(可能覆盖其他元素,但不会撑大空间)。
使用 border-box 模式,避免百分比宽度因内边距/边框被撑破容器:
css复制.container { width: 80%; padding: 20px; box-sizing: border-box; /* 总宽度仍为 80% */}在 Chrome DevTools 中,选中元素后可在 Computed 面板中直观看到盒子模型的四层结构。
https://i.imgur.com/4HjFQkY.png
盒子模型是 CSS 布局的基石,决定了元素尺寸和间距的计算方式。
标准模式下,width/height 仅定义内容尺寸;border-box 模式下,包含内容、内边距和边框。
优化实践:
全局设置 box-sizing: border-box 简化布局计算。
注意外边距合并问题,合理使用 BFC 或 Flex/Grid 布局规避。
结合开发者工具调试,精准控制元素尺寸和间距。