行内元素的水平居中(两种)
1. text-align: center
<div class="parent">
<span class="child">content</span>
</div>
.parent{
background-color: red;
text-align: center;
}
2. width: fit-content; margin: auto;
<div class="parent">
<span class="child">content</span>
</div>
.parent{
background-color: red;
width: fit-content; //父元素的宽度自适应,由子元素撑开
margin: auto;
}
单行文本的垂直居中(一种)
1. line-height
<div class="parent">
<span class="child">content</span>
</div>
.parent{
background-color: red;
height: 200px;
line-height: 200px;
}
块级元素的水平居中
1. margin: 0 auto;
<div class="parent">
<div class="child"></div>
</div>
.parent{
background-color: red;
}
.child{
background-color: blue;
width: 100px;
height: 100px;
margin: 0 auto;
}
水平垂直居中
1. 定位+ margin-top + margin-left
需要提前知道子元素的宽高,取子元素的宽高的一半来移动
<div class="parent">
<div class="child"></div>
</div>
.parent{
background-color: red;
width: 400px;
height: 400px;
position: relative;
}
.child{
background-color: blue;
width: 100px;
height: 100px;
position: absolute;
left: 50%;
top: 50%;
margin-top: -50px; //子元素宽的一半
margin-left: -50px; //子元素高的一半
}
2.定位 + calc()函数
<div class="parent">
<div class="child"></div>
</div>
.parent{
background-color: red;
width: 400px;
height: 400px;
position: relative;
}
.child{
background-color: blue;
width: 100px;
height: 100px;
position: absolute;
left: 50%;
top: 50%;
left: calc(50% - 50px);
top: calc(50% - 50px);
}
3. 定位+transfrom
不需要知道子元素的宽高,也可实现
<div class="parent">
<div class="child"></div>
</div>
.parent{
background-color: red;
width: 400px;
height: 400px;
position: relative;
}
.child{
background-color: blue;
width: 100px;
height: 100px;
position: absolute;
left: 50%;
top: 50%;
transform: translate(-50%,-50%)
}
4. 定位 + margin
<div class="parent">
<div class="child"></div>
</div>
.parent{
background-color: red;
width: 400px;
height: 400px;
position: relative;
}
.child{
background-color: blue;
width: 100px;
height: 100px;
position: absolute;
left: 0;
top: 0;
right: 0;
bottom: 0;
margin: auto;
}
5. padding
<div class="parent">
<div class="child"></div>
</div>
.parent{
background-color: red;
padding: 20px;
}
.child{
background-color: blue;
height: 100px;
}
6. flex
<div class="parent">
<div class="child"></div>
</div>
.parent{
background-color: red;
width: 400px;
height: 400px;
display: flex;
justify-content: center;
align-items: center;
}
.child{
background-color: blue;
width: 100px;
height: 100px;
}
7. grid
<div class="parent">
<div class="child"></div>
</div>
.parent{
background-color: red;
width: 400px;
height: 400px;
display: grid;
}
.child{
background-color: blue;
width: 100px;
height: 100px;
align-self: center;
justify-self: center;
}