水平居中
通用方法,元素宽高未知
适用于子元素为浮动,绝对定位,内联元素,均可水平居中。
CSS3 transform
12345678 .parent {position: relative;}.child {position: absolute;left: 50%:transform: translateX(-50%);}
Flex
1234 .parent {display: flex;justify-content: center;}
居中常规文档流中的内联元素(display:inline)
常见的内联元素有:span, a, img, input, label等等;此方法同样适用于display:inline-block的元素。
123 .parent {text-align: center;}
居中常规文档流中的块元素(display:block)
常见的块元素:div, h1~h6, table, p, ul, li 等等
设置 margin
123456789 .parent {width: 100%;}.child {width: 600px;height: 50px;margin: 0 auto;background: #999;}
修改为 inline-block属性
123456 .parent {text-align: center;}.child {display: inline-block;}
居中浮动元素
1234567 .child {width: 100px;float: left;position: relative;left: 50%;margin-left: -50px;}
居中绝对定位元素
方法一
123456789 .parent {position: relative;}.child {position: absolute;width: 100px;left: 50%;margin-left: -50px;}
方法二
12345678910 .parent {position: relative;}.child {position: absolute;width: 100px;left: 0;right: 0;margin: 0 auto;}
垂直居中
通用方法,元素宽高未知
适用于子元素为浮动,绝对定位,内联元素,均可垂直居中。
CSS3 transform
12345678 .parent {position: relative;}.child {position: absolute;top: 50%;transform: translateY(-50%);}
Flex
1234 .parent {display: flex;align-items: center;}
居中单行文本
把文字的 line-height 设为文字父容器的高度,适用于只有一行文字的情况。
1234 .text {line-height: 200px;height: 200px;}
已知元素宽高
方法一
123456789 .parent {position: relative;}.child{position: absolute;top: 50%;height: 100px;margin-top: -50px;}
方法二
12345678910 .parent {position: relative;}.child{position: absolute;top: 0;bottom: 0;height: 100px;margin: auto 0;}
水平垂直居中
绝对定位居中
1234567891011121314151617 div {width: 100px;height: 100px;margin: auto;position: fixed;//absolute is oktop: 0;right: 0;bottom: 0;left: 0;}//优点不仅可以实现在正中间,还可以在正左方,正右方元素的宽高支持百分比 %属性值和 min-/max-属性可以封装为一个公共类,可做弹出层浏览器支持性好
负边距居中
12345678910111213 .child {width: 100px;height: 100px;position: absolute;top: 50%;left: 50%;margin-left: -50px;margin-top: -50px;}//特点良好的跨浏览器特性,兼容 IE6 - IE7灵活性差,不能自适应,宽高不支持百分比尺寸和 min-/max- 属性
CSS3 transform
123456789101112 .child {width: 100px;height: 100px;position: absolute;top: 50%;left: 50%;transform: translate(-50%, -50%);}//特点内容可自适应,可以封装为一个公共类,可做弹出层可能干扰其他 transform效果
Flexbox
这是 CSS布局未来的趋势;Flexbox是 CSS3新增属性,设计初衷是为了解决像垂直居中这样的常见布局问题。
12345 .parent {display: flex;justify-content: center;align-items: center;}
table-cell
适用于子元素 display为 inline-block, inline类型的元素,需要已知父元素的宽高,且父元素的宽高不能设为百分比数。
1234567891011121314 .parent {display: table-cell;vertical-align: middle;text-align: center;width: 200px;height: 200px;border: 1px solid red;}.child {width: 100px;height: 100px;display: inline-block;background-color: #03f;}
font-size配合 vertical-align实现垂直居中
该方法的要点是给父元素设一个合适的 font-size的值,这个值的取值为该父元素的高度除以1.14得到的值,并且子元素必须 是一个 inline或 inline-block元素,需要加上 vertical-align: middle属性。使用这种方法,子元素的宽度或高度都不必知道。
12345678910111213 .parent {font-size: 175.4px;height: 200px;text-align: center;}.child {vertical-align: middle;display: inline-block;font-size: 12px;width: 50px;height: 50px;background-color: #00f;}
文本内容居中
12345 .text {height: 100px;line-height: 100px;text-align: center;}