一、水平居中
在实际开发中,我们经常会需要将一个元素水平居中,有如下三种方法可以实现。
1、text-align:center
.parent {
text-align: center;
}
.child {
display: inline-block;
}
在父元素中设置text-align:center
,在子元素中设置display:inline-block
,即可使子元素水平居中。
2、margin:auto
.parent {
position: relative;
}
.child {
position: absolute;
left: 50%;
transform: translateX(-50%);
}
这种方法需要将子元素设置为绝对定位,然后通过将左边距设置为50%,再通过transform
属性向左移动自身宽度一半的距离,使子元素水平居中。
3、flex布局
.parent {
display: flex;
justify-content: center;
}
.child {
/* 可以省略 */
}
使用flex布局,将父元素设为flex容器,设置justify-content
属性为center
即可使子元素水平居中。
二、垂直居中
同样地,我们也需要将一个元素垂直居中,有如下三种方法可以实现。
1、line-height
.parent {
height: 200px;
line-height: 200px;
}
.child {
display: inline-block;
vertical-align: middle;
}
在父元素中设置height
和line-height
为相同的值,再将子元素设置为inline-block
,然后通过vertical-align
属性设置为middle
,即可使子元素垂直居中。
2、position+transform
.parent {
position: relative;
}
.child {
position: absolute;
top: 50%;
transform: translateY(-50%);
}
同样也需要将子元素设置为绝对定位,将上边距设置为50%,再通过transform
属性向上移动自身高度一半的距离,使子元素垂直居中。
3、flex布局
.parent {
display: flex;
justify-content: center;
align-items: center;
}
.child {
/* 可以省略 */
}
使用flex布局,将父元素设为flex容器,设置align-items
属性为center
即可使子元素垂直居中。
三、水平垂直居中
如果想要将一个元素水平垂直居中,可以结合以上方法进行实现。
1、position+transform
.parent {
position: relative;
}
.child {
position: absolute;
left: 50%;
top: 50%;
transform: translate(-50%, -50%);
}
将子元素设置为绝对定位,将左边距和上边距分别设置为50%,再通过transform
属性向上和向左移动自身宽高的一半距离,即可使子元素水平垂直居中。
2、flex布局
.parent {
display: flex;
justify-content: center;
align-items: center;
}
.child {
/* 可以省略 */
}
设置父元素为flex容器,同时将justify-content
和align-items
属性都设置为center
,即可实现水平垂直居中。