Table of Contents generated with DocToc

盒模型

盒子模型是网页布局的基石。它有边框外边距内边距内容组成。

盒子 3D 模型

盒模型 - 图1

盒子由上到下依次分为五层,它们自上而下的顺序是。

  1. border 边框
  2. content + padding 内容与内边距
  3. background-image 背景图片
  4. background-color 背景颜色
  5. margin 外边距

See the Pen FEND_003_BoxModel by Li Xinyang (@li-xinyang) on CodePen.

属性

盒模型 - 图2

width

内容盒子宽

width: <length> | <percentage> | auto | inherit

NOTE:通常情况下百分比得参照物为元素的父元素。max-widthmin-width 可以设置最大与最小宽度。

height

内容盒子高

height: <length> | <percentage> | auto | inherit

NOTE:默认情况元素的高度为内容高度。max-heightmin-height 可以设置最大与最小高度。

padding

盒模型 - 图3

padding: [<length> | <percentage>]{1,4} | inherit

margin

盒模型 - 图4

margin: [<length> | <percentage> | auto]{1,4} | inherit

NOTE:margin 默认值为 auto

Trick:

  1. /* 可用于水平居中 */
  2. margin: 0 auto;
margin 合并

盒模型 - 图5

毗邻元素外间距(margin)会合并,既取相对较大的值。父元素与第一个和最后一个子元素的外间距也可合并。

border

盒模型 - 图6

  1. border: [<br-width> || <br-style> || <color>] | inherit
  2. border-width: [<length> | thin | medium | thick]{1,4} | inherit
  3. border-style: [solid | dashed | dotted | ...]{1,4} |inherit
  4. border-colro: [<color> | transparent]{1,4} | inherit

NOTE:border-color 默认为元素字体颜色。

border-radius

盒模型 - 图7

  1. /* 水平半径/垂直半径 */
  2. border-radius: [ <length> | <percentage> ]{1,4} [ / [ <length> | <percentage> ]{1,4} ]?

NOTE:四个角的分解属性由左上角顺时针附值。

overflow

盒模型 - 图8

overflow: visible | hidden | scroll | auto

NOTE:默认属性为 visible。使用 overflow-xoverflow-y 单独的设置水平和垂直方向的滚动条。

box-sizing

盒模型 - 图9

盒模型 - 图10

box-sizing: content-box | border-box | inherit

  • content-box = 内容盒子宽高 + 填充(Padding)+ 边框宽(border-width
  • border-box = 内容盒子宽高
box-shadow

盒模型 - 图11

box-shadown: none | [inset? && [ <offset-x> <offset-y> <blur-radius>? <spread-radius>? <color>? ] ]#

  1. box-shadow: 4px 6px 3px 0px red;
  2. | | | |
  3. 水平偏移| | |
  4. 垂直偏移 | |
  5. 模糊半径 |
  6. 阴影大小

NOTE:水平与垂直偏移可以为负值即相反方向偏移。颜色默认为文字颜色。阴影不占据空间,仅为修饰效果。

outline
  1. outline: [ <'outline-color'> || <'outline-style'> || <'outline-width'> ]
  2. outline-width: <length> | thin | medium | thick | inherit
  3. outline-style: solid | dashed | dotted | ... | inherit
  4. outline-color: <color> | invert | inherit
  5. /* invert 与当前颜色取反色 */

NOTE:outlineborder 相似但无法分别设置四个方向的属性。outline 并不占据空间,而 border 占据空间,且显示位于 border 以外。

TRBL

盒模型 - 图12

盒模型 - 图13

TRBL (Top, Right, Bottom, Left) 即为顺时针从顶部开始。具有四个方向的属性都可以通过 *-top *-right *-bottom*-left 单独对其进行设置。

值缩写

下面的值缩写以 padding 为例。

对面相等,后者省略;四面相等,只设一个。

  1. /* 四面值 */
  2. padding: 20px;
  3. padding: 20px 20px 20px 20px;
  4. /* 上下值 右左值 */
  5. padding: 20px 10px;
  6. padding: 20px 10px 20px 10px;
  7. /* 上值 右左值 下值 */
  8. padding: 20px 10px 30px;
  9. padding: 20px 10px 30px 10px;