CSS盒模型(Box Model)

一、什么是CSS盒模型?

在网页布局中,每一个HTML元素都可以看成一个盒子

CSS会把每个元素设计成一个矩形区域,这个区域由:

  • 内容区域(content)

  • 内边距(padding)

  • 边框(border)

  • 外边距(margin)

四部分组成。

这就是 CSS盒模型(Box Model)

例如:

复制代码
<div>
    我是一个盒子
</div>

浏览器会把它解析成:

复制代码
+--------------------------------+
|            margin              |
|   +------------------------+   |
|   |        border          |   |
|   |  +------------------+  |   |
|   |  |     padding      |  |   |
|   |  |  +------------+  |  |   |
|   |  |  |  content   |  |  |   |
|   |  |  +------------+  |  |   |
|   |  +------------------+  |   |
|   +------------------------+   |
+--------------------------------+

二、盒模型的组成

CSS盒模型由四部分组成:

部分 英文 作用
内容 content 存放文字、图片等内容
内边距 padding 内容和边框之间的距离
边框 border 包围盒子的线
外边距 margin 盒子与其他元素之间的距离

三、内容区域(content)

1. 什么是content?

content是盒子里面真正存放内容的区域。

例如:

复制代码
<div>
    Hello CSS
</div>

其中:

复制代码
Hello CSS

就是content。


2. 设置内容宽高

CSS:

复制代码
div{

    width:300px;

    height:200px;

}

表示:

  • 内容宽度300px

  • 内容高度200px

注意:

默认情况下:

复制代码
width
height

设置的是:

内容区域的大小

不是整个盒子的大小。


四、内边距(padding)

1. 什么是padding?

padding表示:

内容区域和边框之间的距离。

例如:

复制代码
div{

padding:20px;

}

效果:

复制代码
+----------------+
|                |
|   内容         |
|                |
+----------------+

内容距离边框20px。


五、padding的四个方向

padding可以分别设置:

复制代码
div{

padding-top:10px;

padding-right:20px;

padding-bottom:30px;

padding-left:40px;

}

分别表示:

复制代码
        top

left    内容    right

       bottom

六、padding简写形式

1. 一个值

复制代码
padding:20px;

表示:

复制代码
上下左右都是20px

等价:

复制代码
padding-top:20px;
padding-right:20px;
padding-bottom:20px;
padding-left:20px;

2. 两个值

复制代码
padding:10px 20px;

表示:

复制代码
上下:10px

左右:20px

3. 三个值

复制代码
padding:10px 20px 30px;

表示:

复制代码
上:10px

左右:20px

下:30px

4. 四个值

复制代码
padding:10px 20px 30px 40px;

顺序:

复制代码
上 右 下 左

口诀:

上右下左,顺时针方向


七、边框(border)

1. 什么是border?

border表示盒子的边界线。

例如:

复制代码
div{

border:1px solid black;

}

组成:

复制代码
border-width

border-style

border-color

分别是:

属性 作用
border-width 边框宽度
border-style 边框样式
border-color 边框颜色

八、border常见样式

实线

复制代码
border-style:solid;

效果:

复制代码
________

虚线

复制代码
border-style:dashed;

效果:

复制代码
- - - -

点线

复制代码
border-style:dotted;

效果:

复制代码
........

九、单独设置某个方向的边框

例如:

只设置顶部:

复制代码
border-top:2px solid red;

左边:

复制代码
border-left:2px solid blue;

右边:

复制代码
border-right:2px solid green;

底部:

复制代码
border-bottom:2px solid black;

十、外边距(margin)

1. 什么是margin?

margin表示:

一个盒子和其他盒子之间的距离。

例如:

复制代码
div{

margin:20px;

}

效果:

复制代码
        20px

+-------------+
|             |
|    盒子     |
|             |
+-------------+

        20px

十一、margin的设置方式

和padding一样:

一个值

复制代码
margin:20px;

四周20px。


两个值

复制代码
margin:10px 30px;

表示:

复制代码
上下10px

左右30px

四个值

复制代码
margin:10px 20px 30px 40px;

表示:

复制代码
上 右 下 左

十二、盒子的实际大小计算

这是盒模型最重要的知识。

例如:

复制代码
.box{

width:200px;

height:100px;

padding:20px;

border:10px solid black;

}

问:

盒子实际宽度是多少?

计算:

复制代码
实际宽度

= 内容宽度
+ 左右padding
+ 左右border

所以:

复制代码
200
+20+20
+10+10

=260px

实际高度:

复制代码
100
+20+20
+10+10

=160px

最终盒子:

复制代码
宽260px

高160px

十三、box-sizing属性(重点)

默认情况下:

复制代码
box-sizing:content-box;

表示:

width只包含:

复制代码
content

例如:

复制代码
div{

width:200px;

padding:20px;

border:5px solid;

}

实际宽:

复制代码
200+40+10

=250px

1. border-box盒模型

CSS:

复制代码
div{

box-sizing:border-box;

}

表示:

width包含:

复制代码
content + padding + border

例如:

复制代码
div{

width:200px;

padding:20px;

border:5px solid;

box-sizing:border-box;

}

最终:

复制代码
总宽度固定200px

内部内容自动缩小。


十四、为什么开发中经常使用border-box?

实际开发中:

我们经常写:

复制代码
*{

box-sizing:border-box;

}

例如:

页面:

复制代码
1000px宽

三个盒子

如果:

复制代码
.box{

width:33.33%;

padding:20px;

}

默认盒模型:

复制代码
33.33% + padding

超过1000px

容易出现布局错误。

使用:

复制代码
box-sizing:border-box;

宽度包含padding:

布局更加稳定。


十五、margin塌陷问题

什么是margin塌陷?

当两个垂直方向的margin相遇时:

不会相加,而是取最大值。

例如:

盒子1:

复制代码
margin-bottom:50px;

盒子2:

复制代码
margin-top:30px;

结果:

不是:

复制代码
50+30=80px

而是:

复制代码
50px

这叫:

margin合并


十六、margin实现盒子水平居中

条件:

  1. 必须是块级元素

  2. 必须设置宽度

例如:

复制代码
.box{

width:300px;

margin:0 auto;

}

效果:

复制代码
        浏览器窗口

+----------------------+

      +--------+
      | box    |
      +--------+

+----------------------+

解释:

复制代码
margin-left:auto;

margin-right:auto;

自动分配左右空间。


十七、图片和盒模型

图片:

复制代码
<img src="1.jpg">

默认属于:

复制代码
inline-block

可以设置:

复制代码
img{

width:300px;

height:200px;

padding:10px;

border:5px solid;

}

形成图片盒子。


十八、实际开发案例

卡片效果

HTML:

复制代码
<div class="card">
    <h2>CSS学习</h2>
    <p>学习盒模型</p>
</div>

CSS:

复制代码
.card{

width:300px;

padding:20px;

border:1px solid #ccc;

margin:20px;

}

效果:

复制代码
+----------------+
|                |
| CSS学习        |
|                |
| 学习盒模型     |
|                |
+----------------+

十九、盒模型总结

盒模型结构:

复制代码
margin
 |
border
 |
padding
 |
content

四个核心属性:

width / height

控制内容大小

padding

控制内容和边框距离

border

控制边框

margin

控制盒子之间距离


必须掌握:

1. 默认盒模型

复制代码
box-sizing:content-box;

width只表示内容。


2. 推荐盒模型

复制代码
box-sizing:border-box;

width包含:

复制代码
content + padding + border

二十、学习路线总结

CSS学习顺序推荐:

复制代码
HTML标签
     ↓
CSS选择器
     ↓
CSS字体文本
     ↓
CSS背景
     ↓
元素显示模式
     ↓
盒模型 ⭐
     ↓
浮动布局
     ↓
Flex布局
     ↓
Grid布局
相关推荐
呼噜想睡觉2 小时前
Flex弹性布局
css·html·css3
雪隐2 小时前
个人电脑玩AI-15让5060 Ti给你打工——MiniMax H3 本地部署实录:一个自带录音棚的视频模型,和它的 NVFP4 瘦身奇遇
前端·人工智能·后端
GuWenyue3 小时前
不用第三方SDK!Vue3原生Fetch实现DeepSeek流式输出,90%前端都会踩的分片解析坑一次性解决
前端·人工智能·llm
独隅3 小时前
前端离线暂停更新策略:Service Worker 与 PWA 实战指南
前端
不如摸鱼去3 小时前
Wot UI 2.3.0 发布:二维码组件来了,Open Wot 与 wot-starter 同步更新
前端·ui·微信小程序·前端框架·uni-app
Cloud_bread4 小时前
从ReAct到自主闭环:Agentic Coding核心执行引擎的技术演进
前端·react.js·前端框架
cidy_984 小时前
OptMem 使用教程
前端
杉氧4 小时前
用 Compose 挑战交互与动效天花板:ComposeCraftLab 开源实验室全解析
android·前端·kotlin
Canace4 小时前
AI 生成到 90% 突然断了:你的解决方案是?
前端·人工智能