CSS 框模型


CSS 框模型

所有 HTML 元素都可以视为方框。在 CSS 中,在谈论设计和布局时,会使用术语“盒模型”或“框模型”。

CSS 框模型实质上是一个包围每个 HTML 元素的框。它包括:外边距、边框、内边距以及实际的内容。下图展示了框模型:

对不同部分的说明:

  • 内容 - 框的内容,其中显示文本和图像。
  • 内边距 - 清除内容周围的区域。内边距是透明的。
  • 边框 - 围绕内边距和内容的边框。
  • 外边距 - 清除边界外的区域。外边距是透明的。

框模型允许我们在元素周围添加边框,并定义元素之间的空间。

元素框的最内部分是实际的内容,直接包围内容的是内边距。内边距呈现了元素的背景。内边距的边缘是边框。边框以外是外边距,外边距默认是透明的,因此不会遮挡其后的任何元素。

提示:背景应用于由内容和内边距、边框组成的区域。

内边距、边框和外边距都是可选的,默认值是零。但是,许多元素将由用户代理样式表设置外边距和内边距。可以通过将元素的 margin 和 padding 设置为零来覆盖这些浏览器样式。这可以分别进行,也可以使用通用选择器对所有元素进行设置:

  1. * {
  2. margin: 0;
  3. padding: 0;
  4. }

在 CSS 中,width 和 height 指的是内容区域的宽度和高度。增加内边距、边框和外边距不会影响内容区域的尺寸,但是会增加元素框的总尺寸。

假设框的每个边上有 10 个像素的外边距和 5 个像素的内边距。如果希望这个元素框达到 100 个像素,就需要将内容的宽度设置为 70 像素,请看下图:

  1. #box {
  2. width: 70px;
  3. margin: 10px;
  4. padding: 5px;
  5. }

提示:内边距、边框和外边距可以应用于一个元素的所有边,也可以应用于单独的边。

提示:外边距可以是负值,而且在很多情况下都要使用负值的外边距。

演示框模型:

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <style>
  5. div {
  6. background-color: lightgrey;
  7. width: 300px;
  8. border: 15px solid green;
  9. padding: 50px;
  10. margin: 20px;
  11. }
  12. </style>
  13. </head>
  14. <body>
  15. <h1>演示</h1>
  16. <p>CSS 盒模型(框模型)实质上是一个包装每个 HTML 元素的盒子。它包括:边框、内边距(填充)、外边距以及实际的内容。</p>
  17. <div>此文本是盒子里的内容。我们添加了 50px 的内边距,20px 的外边距和 15px 的绿色边框。此文本是盒子里的内容。</div>
  18. </body>
  19. </html>

元素的宽度和高度

为了在所有浏览器中正确设置元素的宽度和高度,您需要了解框模型如何工作。

重要提示:使用 CSS 设置元素的 width 和 height 属性时,只需设置内容区域的宽度和高度。要计算元素的完整大小,还必须把内边距、边框和外边距加起来。

<div> 元素的总宽度将是 350px:

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <style>
  5. div {
  6. width: 320px;
  7. padding: 10px;
  8. border: 5px solid gray;
  9. margin: 0;
  10. }
  11. </style>
  12. </head>
  13. <body>
  14. <h1>计算总宽度:</h1>
  15. <img src="/images/demo.png" width="350" height="263" alt="Klematis">
  16. <div>上面的图片宽 350 像素。此因素的总宽也是 350 像素。</div>
  17. </body>
  18. </html>

计算如下:

  1. 320px(宽度)
  2. + 20px(左+右内边距)
  3. + 10px(左+右边框)
  4. + 0px(左+右外边距)
  5. = 350px

元素的总宽度应该这样计算:

元素总宽度 = 宽度 + 左内边距 + 右内边距 + 左边框 + 右边框 + 左外边距 + 右外边距

元素的总高度应该这样计算:

元素总高度 = 高度 + 上内边距 + 下内边距 + 上边框 + 下边框 + 上外边距 + 下外边距