CSS布局之盒模型 | 青训营笔记

92 阅读2分钟

CSS盒模型

CSS盒模型描述了HTML元素在页面中所占据的空间结构,它把每个HTML元素都看作是一个矩形的盒子。这个盒子由四个部分构成:内容(content)、内边距(padding)、边框(border)和外边距(margin)。

CSS中有两种盒模型:标准盒模型(Content Box)和IE盒模型(Border Box)。

  • 标准盒模型:在标准盒模型中,元素的宽度和高度(width 和 height 属性)只包含内容部分,不包含内边距、边框和外边距。即: 元素在页面上实际占据的宽度(或高度)= width(或 height) + padding + border + margin

  • IE盒模型:在IE盒模型中,元素的宽度和高度(width 和 height 属性)包含了内容、内边距和边框部分,不包含外边距。即:元素实际占据的宽度(或高度)= width(或 height) + margin。使用 box-sizing: border-box; 属性可以将元素的盒模型切换为IE盒模型。

以下是一个简单的 HTML 和 CSS 代码示例来展示盒模型:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Box Model Example</title>
    <style>
       .box {
            width: 200px;
            height: 150px;
            background-color: lightblue;
            padding: 20px;
            border: 5px solid gray;
            margin: 30px;
        }
    </style>
</head>
<body>
    <div class="box">
        标准盒模型。
    </div>
</body>
</html>

我们在CSS中设置元素的width200px,但是元素在页面中实际显示的宽度为249.33px,是由width + padding + border + margin 计算后得到的。

image.png

通过设置 box-sizing: border-box; 属性将元素的盒模型切换为IE盒模型,则元素在页面中实际显示的大小明显减少了,可以看到元素的实际显示宽度为200px,包含了paddingborder,其内容的实际宽度只有150px

image.png

总结

盒模型是布局的基础,无论是浮动布局、定位布局还是现代的Flex弹性布局和Grid布局,都基于盒模型的概念。现代浏览器中盒模型都表现一致,但在老旧的浏览器中可能存在差异,特别是在box-sizing属性的处理上。