Npcink Blog
切换菜单

怎么居中? - CSS 笔记

居中问题需要用到的方法。CSS 没有那么复杂困难不同的情景解决不一样

本页目录11 节

居中是在中经常被抱怨的问题之一。这个问题真的有这么难吗?事实上这个问题并,它在于对于,居中问题需要用到的方法。CSS没有那么复杂困难不同的情景解决不一样,在这里,我们会一起建立来帮助大家来这个问题。

水平居中

行内元素

display属性为 或者 行内元素?(例如:文本或者链接)inlineinline-*

如果你需要居中的在中,你可以使用下面方法。行内元素块级元素

.center-children {
text-align: center;
}
例子:传送门

单个 - 块级元素

如果需要使得,可以利用和。块级元素居中margin-leftmargin-right
.center-me {
margin: 0 auto;
}
例子:传送门
注意:不能是一个浮动的块级元素哦~

多个 - 块级元素 - 同行居中

如果需要使得,这个时候用 可就不行啦,但是我们可以使用或者来实现居中。多个块级元素居中magininline-blockflexbox
inline-block

适合一个父 div 中两个子 div 居中

利用在中的居中方法,先让的变为行内元素,再对的使用居中。行内元素块级元素内部块级元素父级块级元素

.center-parent {
text-align: center;
}
.center-parent .center-child{
display: inline-block;
}

例子

我是内容文本 1
我是内容文本 1
我是内容文本 1
flexbox
.center-parent {
display: flex;
justify-content: center;
}
例子:传送门

多个 - 块级元素 - 同列居中

#####利用的方法,来实现的。单个块级元素居中多个块级元素垂直居中

.center-me {
margin: 0 auto;
}
例子:传送门

垂直居中

单行 - 行内元素

display属性为 或者 行内元素?(例如:文本或者链接)。可以利用或者来实现。inlineinline-*paddingline-height
padding
.text {
padding-top: 30px;
padding-bottom: 30px;
}
例子:传送门
line-height (值和一样)height
.text {
height: 100px;
line-height: 100px;
}
例子:传送门

多行 - 行内元素

对于多行,如果使用的方法,在换行之后,会出现错误。这个时候可以利用的或者或者来实现。行内元素单行表格vertical-alignflexbox伪类
vertical-align
.center-table {
display: table;
}
.center-table p {
display: table-cell;
vertical-align: middle;
}
例子:传送门
flexbox
.center-flexbox {
display: flex;
justify-content: center;
flex-direction: column;
}
例子:传送门
伪类
.center-parent {
position: relative;
}
.center-parent::before {
content: "";
display: inline-block;
height: 100%;
width: 1%;
vertical-align: middle;
}
.center-parent p {
display: inline-block;
vertical-align: middle;
}
例子:传送门

块级元素

元素高度知道
.parent {
position: relative;
}
.child {
position: absolute;
top: 50%;
height: 100px;
margin-top: -50px; // 高度的一半
}
例子:传送门
元素高度不知道
.parent {
position: relative;
}
.child {
position: absolute;
top: 50%;
transform: translateY(-50%);
}
例子:传送门
flexbox
.parent {
display: flex;
flex-direction: column;
justify-content: center;
}
例子:传送门

垂直水平居中

宽度和高度知道(利用的高度知道)垂直居中块级元素
.parent {
position: relative;
}
.child {
width: 200px;
height: 100px;
position: absolute;
top: 50%;
left: 50%;
margin: -50px 0 0 -100px;
}
例子:传送门
宽度和高度不知道(利用的高度不知道)垂直居中块级元素
.parent {
position: relative;
}
.child {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}
例子:传送门
flexbox
.parent {
display: flex;
justify-content: center;
align-items: center;
}