浅析css盒模型

170 阅读2分钟

在 CSS 盒子模型中,每个 HTML 的元素都会被当作是一个矩形的盒子,然后对它们进行从上到下,从左到右的布局。 一个盒子通常包括四个区域,从里到外分别是:

  • 内容区域:代表盒子的实际内容部分,它是由 width 宽度和 height 高度来确定的
  • 内间距区域:代表盒子与实际内容之间的空白区域,由 padding 属性设置
  • 边框区域:代表盒子的边框,是内间距区域和外边距区域的边界,由 border 属性设置
  • 外边距区域:代表此盒子的边框与相邻的其他盒子边框之间的距离,由 margin 属性设置 盒子模型

分类:

CSS盒模型分为content-box(标准盒模型)与border-box(IE盒模型)。图示分别如下:

content-box border-box.jpg

两者区别:

它们计算宽度与高度的方式不相同:

  • content-box(标准和模型)的盒子总宽度/高度= width/height + padding + border + margin(也就是说width/height 只是内容高度
  • border-box(标准和模型)的盒子总宽度/高度= width/height + margin(width/height 包含了 padding 和 border 值

如何设置这两种盒模型

  • content-box(标准和模型):box-sizing: content-box;(浏览器默认)
  • border-box(标准和模型):box-sizing: border-box;(更好用)

外边距合并与解决办法

  1. 哪些情况下会合并?
  • 父子margin合并
  • 兄弟margin合并
  1. 如何阻止合并?
  • 父子合并阻止办法:padding/border;overflow:hidden;display:flex
  • 兄弟合并阻止办法:inline-block

另附高人的理解

图一

CSS的盒子模型太抽象了,通俗讲是什么意思?

本文参考摘录了知乎文章:1、常见的面试问题:【CSS】CSS盒模型 2、一文搞懂 CSS 盒子模型:概念、种类、布局方式、边距塌陷全都在这里了