本系列文章的绝大多数内容都来自 w3cschool, 再次感谢。
本文仅仅简单地介绍CSS框模型,其中的细节问题,需要再查阅资料。
CSS内边距、边框、外边距
CSS框模型定义了元素框处理元素内容、内边距、边框 和 外边距 的方式。
- 内边距、边框和外边距默认值都是0。许多元素由用户代理样式表设置外边距和内边距,可以通过将元素的 margin 和 padding 设置为零来覆盖这些浏览器样式
- 在 CSS 中,width 和 height 指的是内容区域的宽度和高度。增加内边距、边框和外边距不会影响内容区域的尺寸,但是会增加元素框的总尺寸
- CSS2.1指出,元素的背景,是会作用到元素、内边距以边框的
- 内边距、边框和外边距可以应用于一个元素的所有边,也可以应用于单独的边
- padding对应的各边属性是padding-top, padding-right, padding-bottom, padding-left。padding属性可以接受百分数值,基数是父元素的宽度
- border-style 设置边框样式,border-width设置边框宽度,border-color设置边框颜色,对应的每个边的设置属性是border-*-style, border-*-width, border-*-color。如果border-style没有设置,或者设置为none,那么其他属性也不起作用
- margin对应的各边属性是margin-top, margin-right, margin-bottom, margin-left。margin属性可以接受百分数值,基数是父元素的宽度
- padding,border-*, margin分别是对应的四个单边属性的合写,但是它们都支持少于四个数值的值。缺少左值,用右值代替;缺少下值,用上值代替;缺少右值,用上值代替。也就是至少要有上值
外边距合并
- 外边距合并指的是,当两个垂直外边距相遇时,它们将形成一个外边距。合并后的外边距的高度等于两个发生合并的外边距的高度中的较大者
- 当一个元素包含在另一个元素中时(假设没有内边距或边框把外边距分隔开),它们的上和/或下外边距也会发生合并
- 假设有一个空元素,它有外边距,但是没有边框或填充。在这种情况下,上外边距与下外边距就碰到了一起,它们会发生合并
外边距合并初看上去可能有点奇怪,但是实际上,它是有意义的。以由几个段落组成的典型文本页面为例。第一个段落上面的空间等于段落的上外边距。如果没有外边距合并,后续所有段落之间的外边距都将是相邻上外边距和下外边距的和。这意味着段落之间的空间是页面顶部的两倍。如果发生外边距合并,段落之间的上外边距和下外边距就合并在一起,这样各处的距离就一致了。
只有普通文档流中块框的垂直外边距才会发生外边距合并。行内框、浮动框或绝对定位之间的外边距不会合并。