水平居中
1.只需要把行内元素包裹在一个属性display为block的父层元素中,并为父层元素添加如下属性即可:
.parent {
text-align:center;
}
2.块状元素解决方案
.item {
margin: 0 auto;
}
3.多个块状元素解决方案
将元素的display属性设置为inline-block,并且把父元素的text-align属性设置为center即可:
.parent {
text-align:center;
}
4.多个块状元素解决方案 (使用flexbox布局实现)
使用flexbox布局,只需要把待处理的块状元素的父元素添加属性display:flex及justify-content:center即可:
.parent {
display:flex;
justify-content:center;
}
在子元素宽度总和在父元素宽度内,居中正常。如果子元素宽度总和大于父元素宽度,这个方法会将子元素全部强制进父元素的宽度,在设置了宽高150px的情况下:
垂直居中
1.单行的行内元素解决方案
.parent {
background: #222;
height: 200px;
}
/* 以下代码中,将a元素的height和line-height设置的和父元素一样高度即可实现垂直居中 */
a {
height: 200px;
line-height:200px;
color: #FFF;
}
2.多行的行内元素解决方案
组合使用display:table-cell和vertical-align:middle属性来定义需要居中的元素的父容器元素生成效果,如下:
.parent {
background: #222;
width: 300px;
height: 300px;
/* 以下属性垂直居中 */
display: table-cell;
vertical-align:middle;
}
3.已知高度的块状元素解决方案
.parent{
/* 设置父级元素的定位为relative */
position: relative;
}
.item{
top: 50%;
margin-top: -50px; /* margin-top值为自身高度的一半 */
position: absolute;
padding:0;
}
垂直水平居中
1.已知高度和宽度的元素解决方案1
设置父元素属性 position:relative;,如下代码段:
.parent{
position: relative;
}
.item{
position: absolute;
margin:auto;
left:0;
top:0;
right:0;
bottom:0;
}
2.已知高度和宽度的元素解决方案2
设置父元素属性 position:relative;
.item{
position: absolute;
top: 50%;
left: 50%;
margin-top: -50px; /* 设置margin-left / margin-top 为自身高度的一半 */
margin-left: -50px;
}
3.未知高度和宽度元素解决方案
设置父元素属性 position:relative;
.item{
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%); /* 使用css3的transform来实现 */
}
4.使用flex布局实现
.parent{
display: flex;
justify-content:center;
align-items: center;
}