CSS 盒模型与尺寸属性
盒模型是 CSS 的基础概念之一,理解盒模型对于掌握 CSS 布局至关重要。盒模型定义了元素如何占用空间,包括内容、内边距、边框和外边距。
该类属性解决什么问题
盒模型与尺寸属性主要解决以下问题:
- 元素大小控制:精确控制元素的宽度和高度
- 间距管理:通过内外边距控制元素之间的间距
- 布局计算:理解元素实际占用的空间,正确计算布局
- 响应式设计:使用相对单位和最大最小尺寸,实现响应式布局
盒模型基础
标准盒模型
在标准盒模型中,元素的宽度和高度只包括内容区域,不包括内边距、边框和外边距。
┌─────────────────────────────────┐
│ margin (外边距) │
│ ┌───────────────────────────┐ │
│ │ border (边框) │ │
│ │ ┌─────────────────────┐ │ │
│ │ │ padding (内边距) │ │ │
│ │ │ ┌───────────────┐ │ │ │
│ │ │ │ content │ │ │ │
│ │ │ │ (内容区域) │ │ │ │
│ │ │ └───────────────┘ │ │ │
│ │ └─────────────────────┘ │ │
│ └───────────────────────────┘ │
└─────────────────────────────────┘
总宽度 = 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
替代盒模型(border-box)
在替代盒模型中,元素的宽度和高度包括内容、内边距和边框,不包括外边距 。
┌─────────────────────────────────┐
│ margin (外边距) │
│ ┌───────────────────────────┐ │
│ │ border + padding + content │ │
│ │ (总宽度 = width) │ │
│ └───────────────────────────┘ │
└─────────────────────────────────┘
总宽度 = width(已包含 padding 和 border)+ margin-left + margin-right
总高度 = height(已包含 padding 和 border)+ margin-top + margin-bottom
核心属性介绍
尺寸属性
width
设置元素的宽度。
div {
width: 300px; /* 固定宽度 */
width: 50%; /* 相对父元素 */
width: 50vw; /* 相对视口 */
width: auto; /* 自动(默认) */
width: 100%; /* 占满父元素 */
}
height
设置元素的高度。
div {
height: 200px; /* 固定高度 */
height: 50vh; /* 相对视口 */
height: auto; /* 自动(默认) */
height: 100%; /* 占满父元素 */
}
min-width / max-width
设置元素的最小/最大宽度。
div {
min-width: 300px; /* 最小宽度 */
max-width: 1200px; /* 最大宽度 */
width: 100%; /* 在最小和最大之间自适应 */
}
min-height / max-height
设置元素的最小/最大高度。
div {
min-height: 200px; /* 最小高度 */
max-height: 600px; /* 最大高度 */
height: auto; /* 在最小和最大之间自适应 */
}
内边距属性
padding
设置元素的内边距(内容与边框之 间的距离)。
div {
padding: 20px; /* 所有方向 */
padding: 20px 40px; /* 上下 左右 */
padding: 10px 20px 30px 40px; /* 上 右 下 左 */
padding-top: 10px; /* 单独设置 */
padding-right: 20px;
padding-bottom: 30px;
padding-left: 40px;
}