CSS 实现元素水平和垂直居中
Flexbox 布局#
父容器使用 Flexbox 布局实现子元素的水平和垂直居中。
.container {
display: flex;
align-items: center; /* 实现垂直居中 */
justify-content: center; /* 实现水平居中 */
}
结合 Flexbox 和 margin: auto; 属性实现水平和垂直居中。
.container {
display: flex;
}
.child {
margin: auto; /* 同时实现水平和垂直居中 */
}
Grid 布局#
父容器使用 Grid 布局实现子元素的水平和垂直居中。
.container {
display: grid;
place-items: center; /* 同时实现水平和垂直居中 */
}
Table 属性#
使用 Table 属性实现水平和垂直居中。
.container {
width: 100px;
height: 100px;
display: table-cell;
vertical-align: middle; /* 实现垂直居中 */
text-align: center; /* 实现水平居中 */
}
.child {
width: 20px;
height: 20px;
display: inline-block;
}
子绝父相#
子绝父相表示:子元素设置绝对定位,父容器设置相对定位。
不知道子元素和父容器的高度#
使用 position 和 transform 属性可以同时实现水平和垂直居中。
.container {
position: relative;
}
.child {
position: absolute;
top: 50%; /* 实现垂直居中 */
left: 50%; /* 实现水平居中 */
transform: translate(-50%, -50%);
}
知道子元素和父容器的高度#
使用 position 和 margin 属性同时实现水平和垂直居中。
.container {
position: relative;
height: 100vh;
}
.child {
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
margin: auto; /* 同时实现水平和垂直居中 */
}
line-height#
如果子元素是单行文本,可以使用 line-height 来实现垂直居中。
.container {
height: 100px;
text-align: center; /* 实现水平居中 */
line-height: 100px; /* 实现垂直居中 */
}
这个方法适用于只包含单行文本的元素。