跳至正文
来两杯美式
返回

CSS 基础(二):盒模型

By 来两杯美式
发布于

CSS 盒模型(Box Model)

核心概念

HTML 里所有元素都是一个矩形盒子,浏览器就是靠堆这些盒子拼出整个页面的。盒模型规定了盒子由哪几部分组成,尺寸怎么算。


快递盒比喻

盒子部分对应快递盒的什么作用Tailwind 写法
content(内容)你买的商品本身放实际内容(文字、图片、子元素)w-* h-* 控制内容尺寸
padding(内边距)商品和盒子内壁之间的泡沫填充把内容和边框隔开,撑出内部空隙p-* 控制内边距大小
border(边框)快递盒本身的硬纸板盒子的边界,可视化的轮廓border border-* 控制边框
margin(外边距)这个快递盒和旁边其他快递盒之间的空隙把当前盒子和其他盒子隔开,撑出外部空隙m-* 控制外边距大小
┌───────────── margin ─────────────┐
│ ┌────────── border ───────────┐ │
│ │ ┌────── padding ──────┐    │ │
│ │ │                      │    │ │
│ │ │      content         │    │ │
│ │ │                      │    │ │
│ │ └──────────────────────┘    │ │
│ └─────────────────────────────┘ │
└──────────────────────────────────┘

直观演示代码

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8" />
    <!-- T3+Tailwind默认就是这个全局设置,提前感受 -->
    <style>
      * {
        box-sizing: border-box;
      }
    </style>
  </head>
  <body>
    <!-- 外层大盒子 -->
    <div
      style="
      width: 250px;   /* 整个盒子总宽就是250px,不会变大 */
      height: 250px;  /* 整个盒子总高就是250px */
      margin: 30px;   /* 我和浏览器边缘(其他盒子)的空隙是30px */
      padding: 30px;  /* 我边框和内容之间的空隙是30px */
      border: 5px solid red;  /* 边框就是这圈红色 */
      background: lightblue;
    "
    >
      <!-- 里面的内容盒子 -->
      <div style="background: yellow;">我就是内容content</div>
    </div>
  </body>
</html>

对应关系:


核心必懂:盒子尺寸计算

有两种计算盒子总宽度的规则:

1. 旧规则 content-box(默认)

你写 width: 200px,只是内容宽 200,总宽度还要额外加 padding + border。很容易撑破布局,要不停算尺寸。

2. 现代规则 border-box(推荐)

你写 width: 200px,整个盒子(内容 + padding + border)总宽度就是 200,padding 和 border 从 200 里扣,不会额外变大。布局非常好控制。

T3 + Tailwind 初始化的项目,默认全局就把所有元素改成了 border-box,不用额外设置,直接用就行。这也是 Tailwind 写布局快的核心原因之一。


实际开发中的对应

写 T3 项目时,所有 Tailwind 样式都是操作盒模型:

场景Tailwind 类对应盒模型
给卡片内部留空隙p-4加 padding
让按钮和标题之间留空隙mt-2给 margin-top 加值
固定卡片宽度w-80设总宽度,不用担心 padding 撑大盒子

分享这篇文章:
通过邮件分享这篇文章✓ 链接已复制
所属专题
CSS
第 2 / 7 篇
查看系列全部文章
  1. 01.CSS 基础(一):元素类型与 display 属性
  2. 02.CSS 基础(二):盒模型
  3. 03.CSS 基础(三):浮动
  4. 04.CSS 基础(四):定位
  5. 05.CSS 基础(五):Flex 弹性布局
  6. 06.CSS 基础(六):Grid 网格布局
  7. 07.CSS 基础(七):响应式设计与媒体查询

上一篇
CSS 基础(三):浮动
下一篇
CSS 基础(一):元素类型与 display 属性