CSS 盒模型

Yuyang 前端小白🥬

CSS 盒模型介绍

CSS中的盒模型用来描述一个元素在页面汇总的布局方式,每个HTML元素都被视为是一个矩形的盒子,这个盒子由实际内容(content)、外边距(margin)、边框(border)和内边距(padding)组成。
CSS盒模型主要包含两种:W3C标准盒子模型和IE怪异盒子模型。

CSS的box-sizing属性定义了引擎如何计算一个元素的总宽度和总高度

box-sizing: content-box | border-box |inherit

  • content-box 默认值,元素的 width/height 不包含 padding,border 与标准盒子模型表现一致
  • border-box 元素的 width/height 包含 padding,border,与怪异盒子模型表现一致
  • inherit 指定 box-sizing 属性的值,应该从父元素继承

标准盒子模型:

  • 盒子总宽度 = width + padding + border + margin
  • 盒子总高度 = height + padding + border + margin
1
2
3
4
5
6
7
.box {
width: 200px;
height: 40px;
padding: 10px;
border: 1px solid red;
margin: 10px;
}

image-20241020000606496

IE怪异盒子模型:

  • 盒子总宽度 = width + margin
  • 盒子总高度 = height + margin
1
2
3
4
5
6
.box {
box-sizing: border-box;
width: 200px;
height: 100px;
padding: 20px;
}

image-20241020001810933

Example

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>CSS 盒模型示例</title>
<link rel="stylesheet" href="styles.css">
</head>
<body>
<div class="box">
<p>W3C 标准盒子模型</p>
</div>
<div class="box2">
<p>IE 怪异盒子模型</p>
</div>
</body>
</html>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
body {
margin: 0;
padding: 0;
font-family: Arial, sans-serif;
display: flex;
justify-content: center;
align-items: center;
height: 100vh;
}

.box {
width: 200px;
height: 100px;
padding: 20px;
margin: 30px;
border: 5px solid #3498db;
background-color: #f5f5f5;
box-sizing: content-box;
text-align: center;
}

.box2{
width: 200px;
height: 100px;
padding: 20px;
margin: 30px;
border: 5px solid #3498db;
background-color: #f5f5f5;
box-sizing: border-box;
text-align: center;
}