盒模型是CSS(层叠样式表)中的一个基本概念,它描述了网页上的元素如何构造和显示。它定义了元素的内容、内边距、边框和边距的属性和行为。

CSS中盒模型的意义如下:

  • 视觉表示:盒模型允许开发人员可视化并理解元素的结构以及它们在网页上的显示方式。每个元素都表示为一个矩形框,框内的内容由内边距、边框和边距包围。

  • 布局和定位:框模型影响元素的布局和定位。网页上的元素。

  • 尺寸计算:盒模型允许精确计算元素尺寸,包括宽度和高度。

  • 控制和定制:通过盒模型,开发人员可以对元素的外观进行细粒度控制。

  • 响应式设计:盒模型在响应式网页设计,其中元素需要适应和响应不同的屏幕尺寸和设备。

CSS 盒模型

CSS 盒模型是一个概念用于描述网页中的元素如何构建和视觉显示。它由四个基本组件组成:内容、内边距、边框和边距,如下图所示:

CSS 盒子模型

让我们详细了解每个组件:

  • 内容框:这是框的最里面的部分指元素的实际内容,例如文本、图像或其他媒体。它由内边距、边框和边距包围。您可以使用 inline sizeblock-size 等属性设置其大小a>,也称为宽度和高度。

  • 填充框:表示内容和元素边框之间的空间。它可以单独应用于元素的每一侧(顶部、右侧、底部和左侧),通常用于创建间距或提供视觉缓冲。该框的大小使用 padding 和其他相关属性设置。

  • 边框框:定义线条或元素的填充和内容周围的边界。它可以具有尺寸、样式和颜色等属性,并且可以针对每一面单独进行调整。该框的大小是使用 border 和其他相关属性设置的。

  • 边距框:表示外部的空间元素的边框。与填充一样,边距也可以为每一侧单独设置,通常用于在网页上的元素之间创建空间。该框的大小是使用margin和其他相关属性设置的。

元素占用的总空间网页上的宽度是其内容宽度、内边距、边框和边距的总和。了解 CSS 盒模型对于在网页上设计和定位元素至关重要,因为它允许您控制间距、布局和整体设计。

盒模型有两种类型:

  • 标准盒子模型

  • 替代盒子模型

浏览器使用默认情况下,标准盒模型。让我们在以下部分中研究两种类型的盒模型。

标准盒模型

传递 inline-sizeblock-size 值,在标准盒模型的情况下,它定义内容框的宽度和高度。为了计算盒子占用的总大小,您需要将指定的内边距和边框(如果有)相加。

请参阅下图以更好地理解。

CSS 盒子模型

考虑盒子的以下尺寸,让我们计算实际的尺寸盒子占用的空间:

 .box {
   width: 300px;
   height: 100px;
   margin: 20px;
   padding: 15px;
   border: 5px solid green;
}

列出尺寸的框所占用的空间将为:

尺寸计算
宽度宽度 + 左内边距 + 右内边距 + 左边框 + 右边框
高度高度 + 顶部内边距+ padding-bottom + border-top + border-bottom

总宽度 = 300(宽度)+15(左内边距)+15 (右内边距)+5(左边框)+5(右边框)= 340px

总高度=100(高度)+15(上内边距)+15(下内边距)+5(上边框) +5(底部边框)= 140px

盒子区域仅达到边距,因此边距区域不会总计到盒子所占用的最终空间。

替代盒模型

在替代盒模型的情况下,元素的实际宽度是传递给它的 width 值,情况也是如此高度。在计算盒子的实际大小时不需要添加内边距和边框。

为了启用或打开元素的替代盒子模型,您需要设置 box-sizing: border - 上面有一个盒子。请参考下面给出的语法:

 .box {
    box-sizing: border-box;
}

让我们考虑盒子的相同尺寸,如上面的示例所示,并计算盒子所占用的实际空间:

 .box {
   width: 300px;
   height: 100px;
   margin: 20px;
   padding: 15px;
   border: 5px solid green;
}

列出尺寸的框所占用的空间为:

总宽度 = width = 300px

总高度 = height = 100px

示例

以下是标准和替代盒子模型的示例:

 <html>
<head>
<style>
   .box {
      width: 300px;
      height: 100px;
      margin: 20px;
      padding: 15px;
      border: 5px solid green;
      background-color: aquamarine;
   }
   .alternative-model {
      box-sizing: border-box;
   }
</style>
</head>
<body>
   <div class="box">
      <h3>标准盒子模型</h3>
      <p>Total width=300+15+15+5+5=340px</p>
      <p>Total height=100+15+15+5+5=140px</p>
   </div>
   <div class="box alternative-model">
      <h3>替代盒子模型</h3>
      <p>Total width=300px / height=100px</p>
   </div>
</body>
</html> 

边框、内边距和边距

盒子模型的重要组成部分是边框、内边距和边距。

边框

边框位于边距之间和盒子的填充物。有多种 CSS 属性,用于设置四个边框的样式,其中每个边框都有可以修改的样式、宽度和颜色。

您可以使用属性 border 设置边框的宽度、样式或颜色。它是各个边框的简写。

所有与border相关的属性都列在下表中:

属性描述
border用于设置所有内容的简写属性一个声明中的边框属性
border-bottom用于设置底部的简写属性元素的边框。
border-bottom-color设置元素的颜色元素的下边框。
border-bottom-width设置宽度元素的下边框。
border-bottom-style设置元素下边框的样式。
border-color简写属性设置元素的边框颜色。
border-left设置的简写属性元素的左边框。
border-left-color设置颜色元素左边框的宽度。
border-left-width设置元素左边框的宽度。
border-left-style设置元素左边框的样式。
border-right简写属性用于设置元素的右边框。
border-right-colorSets元素右边框的颜色。
border-right-width设置元素右边框的宽度。
border-right-style设置元素右边框的样式。
border-style设置元素边框样式的简写属性
border-topShorthand用于设置元素上边框的属性。
border-top-color设置元素上边框的颜色。
border-top-width设置元素上边框的宽度。
border-top-style设置元素上边框的样式。
border-width用于设置元素边框宽度的简写属性。

Padding

Padding 是边框和边框之间的区域。内容。填充将内容推离边框。 Padding 不能为负值,当任何背景应用于元素时,它将显示在 padding 后面。

可以为元素的所有四个边(上、右、下)设置 padding 属性,和左)使用简写语法,或单独使用特定属性的每一侧。

下表列出了与填充相关的所有属性:

属性描述
padding用于在一个声明中设置所有填充属性的简写属性。
padding-top设置元素的顶部内边距。
padding-right设置元素的右内边距。
padding-bottom设置元素的底部内边距。
padding-left设置元素的左内边距。

边距

边距是推动元素的框周围的不可见空间远离盒子。 margin 属性有助于调整网页上元素的布局。

可以使用简写语法为元素的所有四个边(上、右、下、左)设置 margin 属性,或单独为每一侧使用特定属性。

正值和负值可以传递给 margin 属性。负值可能会导致元素重叠。在计算元素占用的总空间时,不包括边距,无论是标准盒模型还是替代盒模型。

所有与边距相关的属性都列在下表:

属性说明
margin-shorthand用于在一个声明中设置所有边距属性的简写属性。
margin-top设置元素的上边距。
margin-right设置元素的右边距。
margin -bottom设置元素的下边距。
margin-left设置元素的左边距。
  • 当一个元素拥有两个正边距时,这两个元素将合并形成一个边距;其中边距大小将等于最大的单个边距。

  • 当一个元素拥有两个负边距时,它们将折叠;其中边距大小将等于最小的单个边距。

  • 当元素拥有负边距时,将从总值中减去负值。

盒子模型和内联盒子

内联元素周围也有盒子。它们也有边距、填充、边框,就像任何其他盒子一样。

示例

下面是一个示例,其中解释了内联元素 <p>周围的盒子模型。详细说明请参见图。

 <html>
<head>
<style>
   p {
      padding: 1em 2em;
      margin: 5px 10px;
      border: 5px solid red;
      width: 200px;
   }
</style>
</head>
<body>
   <h1>盒子模型</h1>
   <p>盒模型示例。</p>
</body>
</html>

CSS 盒子模型

显示:内联块

带有 display: inline-block 的元素,尊重宽度和高度值。并且内边距、边框和边距的值会将其他元素推离框。

当您想要为元素(例如链接)提供更大的区域时,此功能非常有用nootransLanootransR。您可以在该元素上使用 display: inline-block 以及填充和其他相关属性。

示例

以下是一个示例:

 <html>
<head>
<style>
   a {
      padding: 1em 2em;
      margin: 5px 10px;
      border: 5px solid red;
      width: 50px;
      display: inline-block;
      background-color: beige;
      font-size: 1em;
   }
</style>
</head>
<body>
   <h1>display: inline-block</h1>
   <a href="">First</a>
   <a href="">Second</a>
   <a href="">Third</a>
</body>
</html>

以下是内联元素的示例:

 <html>
<head>
<style>
   a {
      padding: 0em 2em;
      margin: 10px 10px;
      border: 5px solid red;
      width: 50px;
      background-color: beige;
      font-size: 1em;
   }
</style>
</head>
<body>
   <p>The display:inline-block respects the width of the element. Here it is applied on the link <a href="">First</a>. 
      As you change the value of padding, margin or/and border you can see the change.</p>
</body>
</html>

您可以减少边距、内边距或/和边框,以查看内联元素的变化。

块和内联框

CSS 提供了不同类型的框,是块框或行内框。这些框的显示方式可以有两种类型:内显示型和外显示型。

框的显示可以使用CSS的display属性来设置,该属性有多种值。根据这些值可以确定显示。

请参阅图表以更好地了解显示:块|内联。

CSS 盒子模型

外部显示类型 - 块

当盒子的显示类型为块时,您可以观察这些:

默认HTML nootransLh1nootransR、nootransLpnootransR等元素使用块作为其外部显示类型。

外部显示类型 - 内联

当盒子的显示类型为内联时,您可以观察到这些:

  • widthheight 属性值不受尊重,因此不会应用。

  • 该框不会换行。

  • 顶部底部边距、内边距和边框将被应用,但不会导致其他内联框移离框。

  • 左右边距、内边距和边框将被应用应用并会导致其他内联框移离框。

默认情况下,<a>、<em>、<span>、<strong>等HTML 元素使用内联作为其外部显示类型。

内部显示类型

默认情况下,元素或框的布局是块和内联,但可以使用 display 属性的值更改内部显示类型;例如,显示:flex |网格。该元素的外部显示将作为块,但内部显示将更改为 flex |网格。该元素的直接子元素的显示类型为 flex。

有关各种显示值的详细信息和示例,请单击display.