盒子模型
盒子模型的基础属性
| 属性 | 说明 | 
|---|---|
width | 元素宽度 | 
min-width | 元素最小宽度限制 | 
max-width | 元素最大宽度限制 | 
height | 元素高度 | 
min-height | 元素最小高度限制 | 
max-height | 元素最大高度限制 | 
padding | 边框内边距 | 
border | 边框 | 
margin | 边框外边距 | 
width 与 height
设置元素宽高。
auto,默认值length%,基于包含块的百分比宽/高
min-width/min-height 与 max-width/max-height
设置元素的「最小宽度/最小高度」与「最大宽度/最大高度」。
min-width/min-height
length,默认值为0%,基于包含块的百分比最小宽/高
max-width/max-height
none,默认值,没有最大宽高的限制length%,基于包含块的百分比最小宽/高
padding
边框内边距。
length,默认值为 0,不能取负数%,基于包含块的宽度百分比
margin
边框外边距。
auto,默认值length,可以取负数%,基于包含块的宽度百分比
盒子模型分类
标准盒子模型
box-sizing: content-box;
- 默认情况下所有节点都是标准盒子模型
 - 整个盒子的尺寸 (占据页面的大小) = 
margin + border + padding + content - 节点的 
width和height属性控制的是content的大小 
怪异盒子模型
box-sizing: border-box;
- 通常情况下整个盒子的尺寸 (占据页面的大小) = 
margin + (width * height) - 节点的 
width和height属性控制的是border + padding + content的大小 
对于怪异盒子模型来说,如果设置的 width、height 是大于 border、padding 的取值的,那么是符合上述两点的,width 和 height 会依次先被 border、padding 瓜分,最后剩余的空间就是 content 的。
但是,如果 border、padding 超出了 width 和 height 的范围,比如下面这样:
div {
  width: 100px;
  height: 100px;
  padding: 30px;
 
  border: 200px solid black;
  box-sizing: border-box;
}
这样就会无视掉 width 和 height 的设置,里面的 content 会被挤压为 0,整个盒子高度为 border-top-width + padding-top + padding-bottom + border-bottom-width,即 200px + 30px + 30px + 200px。

另外,来谈一下怪异盒子模型的应用,怪异盒子模型
助记
- 盒子的可视区域:
border + padding + content content-box指的是width/height控制的是content的大小border-box指的是width/height控制的是border + padding + content的大小