全国统一服务热线:400-633-9193

CSS水平垂直居中解决方案(6种)

    网络     2018-02-26    1164

准备

创建元素

1
2
3
<div class="parent">
  <div class="child">child</div>
</div>

垂直水平居中方案一:知道宽度的情况下 absolute+margin负值

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
.parent {
  width:400px;
  height:400px;
  background: red;
  position: relative;
}
.child {
  position: absolute;
  left:50%;
  top:50%;
  background: yellow;
  width:50px;
  height:50px;
  margin-left:-25px;
  margin-top:-25px;
}

垂直水平居中方案二:不知道宽高的情况下 absolute+transform

1
2
3
4
5
6
7
8
9
10
11
12
.parent {
  width:400px;
  height:400px;
  background: red;
  position: relative;
}
.child {
  position: absolute;
  left:50%;
  top:50%;
  transform: translate(-50%,-50%);
}

垂直居中方案三:position+margin:auto

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
.parent {
  position:relative;
  width:200px;
  height:200px;
  background: red;
}
.child {
  width:80px;
  height:40px;
  background: yellow;
  position: absolute;
  left:0;
  top:0;
  right:0 ;
  bottom:0;
  margin:auto;
}

垂直居中方案四:+ 多行文本的垂直居中 :table-cell+vertical-align:middle;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
.parent {
    height: 300px;
    width:400px;
    border: 1px solid red;
    display: table-cell;
    vertical-align: middle;
    text-align: center;
}
.child {
  display: inline-block;
  width:50px;
  height:50px;
  background: blue;
}
/* 或者 */
.parent {
    width: 400px;
    height: 300px;
    display: table-cell;
    vertical-align: middle;
    border: 1px solid red;
    text-align: center;
}
.child {
    display: inline-block;
    vertical-align: middle;
    background: blue;
}

垂直居中方案五:display: flex

1
2
3
4
5
6
7
8
9
10
11
12
13
.parent {
  width:400px;
  height:200px;
  background:red;
  display: flex;
  justify-content:center;
  align-items:center;
}
.child {
  height:100px;
  width:100px;
  background:green;
}

垂直居中方案六:伪元素

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
.parent {
  width:200px;
  height:200px;
  background:red;
  text-align: center;
}
.child {
  height:100px;
  width:100px;
  background:yellow;
  display: inline-block;
  vertical-align: middle;
}
.parent:before {
  content:"";
  height:100%;
  vertical-align: middle;
  display: inline-block;
}


  分享到:  
0.1721s