文字居中
垂直居中
可以将margin、padding设置为固定的值,从而达到文字居中的目的。由于长度一般不确定,所以此方法可以实现文字垂直居中。
或设置段落line-height,则文字自动实现相对段落垂直居中。
当一个内联行中元素高度不同时,可以使用vertical-align设置行内元素对齐方式。
水平居中
设置text-align为center可以实现文字水平方向居中
块级元素居中
给所有的包含块以及子块设置margin可以实现水平与垂直居中,但是要求知道这些块的大小,此处省略此方法。
margin设为auto
可以实现垂直排列,水平居中。
如果一个块outer包含一个块inner,在水平方向居中。则可以将inner的margin-left和margin-right设为auto,则可以完成水平居中(此为css2.1标准规定的特性,但不能垂直居中)。如果对一个块中的所有子块应用此方法,所有子块都可以实现水平方向居中,且从上到下排列。
1 | .inner { |
转为内联元素
可以实现元素水平排列,且处于水平/垂直居中位置。将子元素转为内联元素后,与上述文字居中表现相同。
1 | .outer { |
转为绝对定位
可以实现绝对的居中。
由于使用绝对定位,所以脱离正常文档流,不受其他元素影响。由于使用绝对定位,所有有一定的副作用。
1 | .outer { |
其他
此外,还可以将display设为table,然后进行相关配置,或者使用百分比、浮动等,虽然都可以实现,但并不好。比较好的方法,还是转为可伸缩盒。
flexbox
flexbox是一个很好的实现布局的盒子模型。此处仍然以outer为父容器,inner为子元素为例。
1 | .outer { |
- 伸缩容器display:flex|inline-flex。
- 伸缩流方向flex-direction:row|row-reverse|column|column-reverse
- 伸缩换行flex-wrap: nowrap|wrap|wrap-reverse
- flex-flow: <’flex-direction’> || <’flex-wrap’>
- 主轴对齐justify-content:flex-start|flex-end|center|space-between|space-around
- 侧轴对齐align-items:flex-start|flex-end|center|baseline|stretch
- 侧轴对齐align-self:flex-start|flex-end|center|baseline|stretch ——inner子容器
- 堆栈伸缩行align-content:flex-start|flex-end|center|space-between|space-around|stretch
- 伸缩性flex:none|[<’flex-grow’><’flex-shrink’>?||<’flex-basic’>] ——inner子容器
- 显示顺序order:
——inner子容器