行内元素(比如文字,span,图片等)的水平居中,其父元素中设置
text-align: center;
示例
<style>
body {
background-color: #eeeeee;
}
.box {
background-color: green;
color: #fff;
margin-top: 20px;
}
.box--center {
text-align: center;
}
</style>
<div class="box">两个黄鹂鸣翠柳,一行白鹭上青天</div>
<div class="box box--center">两个黄鹂鸣翠柳,一行白鹭上青天</div>
效果
块级元素,比如 div,其默认宽度是100%。给定一个宽度的时候,可以居中对齐
width: 50%;
margin: 0 auto;
示例
<style>
body {
background-color: #eeeeee;
}
.box {
background-color: green;
height: 50px;
}
.box--center {
width: 50%;
margin: 0 auto;
margin-top: 20px;
}
</style>
<div class="box"></div>
<div class="box box--center"></div>
实现效果
对于单行文字居中,可以设置父元素的行高来实现,将其行高与元素高度设置为相同的值即可:
height: 50px;
line-height: 50px;
示例
<style>
body {
background-color: #eeeeee;
}
.box {
background-color: green;
color: #fff;
margin-top: 20px;
height: 50px;
}
.box--center {
line-height: 50px;
}
</style>
<div class="box">两个黄鹂鸣翠柳,一行白鹭上青天</div>
<div class="box box--center">两个黄鹂鸣翠柳,一行白鹭上青天</div>
也适用于单行文字、行内元素
height: 200px;
display:table-cell;
vertical-align:middle;
示例
<style>
body {
background-color: #eeeeee;
display: flex;
}
.box {
background-color: green;
color: #fff;
height: 200px;
width: 130px;
}
.box--center {
display: table-cell;
vertical-align: middle;
}
.box-wrap {
margin-left: 20px;
}
</style>
<div class="box">两个黄鹂鸣翠柳,一行白鹭上青天。</div>
<div class="box-wrap">
<div class="box box--center">两个黄鹂鸣翠柳,一行白鹭上青天。</div>
</div>
上面的方法也可以让图片垂直居中
display: table-cell;
vertical-align: middle;
示例
<style>
body {
background-color: #eeeeee;
display: flex;
}
.box {
background-color: green;
color: #fff;
height: 200px;
width: 200px;
}
.box--center {
display: table-cell;
vertical-align: middle;
}
.box-wrap {
margin-left: 20px;
color: #fff;
position: relative;
}
.image {
width: 192px;
height: 108px;
vertical-align: middle;
}
.label {
position: absolute;
right: 0;
top: 0;
background-color: pink;
padding: 0 4px;
}
</style>
<div class="box-wrap">
<div class="box">
<img
class="image"
src="https://cn.bing.com/th?id=OHR.ViennaAutumn_ZH-CN7011999199_1920x1080.webp"
alt=""
/>
</div>
<div class="label">box</div>
</div>
<div class="box-wrap">
<div class="box box--center">
<img
class="image"
src="https://cn.bing.com/th?id=OHR.ViennaAutumn_ZH-CN7011999199_1920x1080.webp"
alt=""
/>
<div class="label">box--center</div>
</div>
</div>
使用绝对定位实现:子绝父相(子元素绝对定位,父元素相对定位)
.box-wrap--center {
position: relative;
}
.box-wrap--center .box {
position: absolute;
left: 50%; /* x轴方向相对父元素的宽移动 50% */
top: 50%; /* y轴方向相对父元素的高移动 50% */
transform: translate(-50%, -50%); /* x轴、y轴方向相对自身元素的宽、高移动 -50% */
}
示例
<style>
body {
background-color: #eeeeee;
display: flex;
}
.box-wrap {
height: 300px;
width: 300px;
background-color: green;
margin-right: 20px;
}
.box {
background-color: pink;
height: 100px;
width: 100px;
}
.box-wrap--center {
position: relative;
}
.box-wrap--center .box {
position: absolute;
left: 50%;
top: 50%;
transform: translate(-50%, -50%);
}
</style>
<div class="box-wrap">
<div class="box"></div>
</div>
<div class="box-wrap box-wrap--center">
<div class="box "></div>
</div>