居中是在中经常被抱怨的问题之一。这个问题真的有这么难吗?事实上这个问题并,它在于对于,居中问题需要用到的方法。CSS没有那么复杂困难不同的情景解决不一样
,在这里,我们会一起建立来帮助大家来这个问题。
水平居中
行内元素
display
属性为 或者 行内元素?(例如:文本或者链接)inline
inline-*
如果你需要居中的在中,你可以使用下面方法。行内元素
块级元素
.center-children {
text-align: center;
}
例子:传送门
单个 - 块级元素
如果需要使得,可以利用和。块级元素居中
margin-left
margin-right
.center-me {
margin: 0 auto;
}
例子:传送门
注意:不能是一个浮动的块级元素哦~
多个 - 块级元素 - 同行居中
如果需要使得,这个时候用 可就不行啦,但是我们可以使用或者来实现居中。多个块级元素居中
magin
inline-block
flexbox
inline-block
适合一个父div中两个子div居中
利用在中的居中方法,先让的变为行内元素,再对的使用居中。行内元素
块级元素
内部
块级元素
父级
块级元素
.center-parent {
text-align: center;
}
.center-parent .center-child{
display: inline-block;
}
例子
flexbox
.center-parent {
display: flex;
justify-content: center;
}
例子:传送门
多个 - 块级元素 - 同列居中
#####利用的方法,来实现的。单个块级元素
居中
多个块级元素
垂直居中
.center-me {
margin: 0 auto;
}
例子:传送门
垂直居中
单行 - 行内元素
display
属性为 或者 行内元素?(例如:文本或者链接)。可以利用或者来实现。inline
inline-*
padding
line-height
padding
.text {
padding-top: 30px;
padding-bottom: 30px;
}
例子:传送门
line-height (值和一样)height
.text {
height: 100px;
line-height: 100px;
}
例子:传送门
多行 - 行内元素
对于多行,如果使用的方法,在换行之后,会出现错误。这个时候可以利用的或者或者来实现。行内元素
单行
表格
vertical-align
flexbox
伪类
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;
}