在前端开发中,让元素居中是常常用到的。其中,居中可以分为水平和垂直居中两种。
水平居中
1、margin:0 auto
代码如下:1
2
3
4
5
6
7.content{
width: 100px;
height: 100px;
background: #f14b11;
margin: 0 auto;
}
<div class="content"></div>
效果图:
水平垂直居中
1、position
利用position实现水平垂直居中,父元素相对定位,子元素绝对定位。子元素距离左与上各-50%,margin减去自身宽度的一半。适用于具有固定宽和高的元素居中
代码如下:
1 | .parent{ |
效果图:
2、position and transform
利用position和transform使元素居中。将子元素的margin替换成transform:translate(-50%,-50%)。使用于不知道具体宽和高的元素居中1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21.parent{
position: relative;
width: 300px;
height: 300px;
background: red;
margin: auto;
}
.son{
width: 100px;
height: 100px;
position: absolute;
background: yellow;
left: 50%;
top: 50%;
/*margin: -50px -50px;*/
transform: translate(-50%,-50%);
}
<div class="parent">
<div class="son"></div>
</div>
3、flex
利用弹性布局使元素居中。给父元素设置
display:flex;//设置父元素
justify-content:center;//水平居中
align-items:center;//垂直居中1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19.parent{
position: relative;
width: 300px;
height: 300px;
background: red;
margin: auto;
display: flex;
align-items: center;
justify-content: center;
}
.son{
width: 100px;
height: 100px;
background: yellow;
}
<div class="parent">
<div class="son"></div>
</div>
效果图:
4、table-cell
组合使用display:table-cell和vertical-align、text-align,使父元素内的所有行内元素水平垂直居中。适用于不知道元素具体宽和高是。1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18.parent{
position: relative;
width: 300px;
height: 300px;
background: red;
margin: auto;
display: table-cell;
vertical-align: middle;
text-align: center;
border:1px solid #666;
}
.son{
color: yellow;
}
<div class="parent">
<div class="son">我爱你中国</div>
</div>
效果图:
table-cell的应用还有很多,具体的参考张鑫旭老师的《display:table-cell的应用》。
5、vertical-align:middle
1 | .parent{ |
效果图: