html 布局

水平居中&垂直居中指的都是子元素相对于父元素位置,所以页面中需要有两个元素,假设外层元素id为out,内层元素id为in。

1
2
3
4
<div id="out">
<div id="in"/>
<!--p id="in"/-->
</div>

水平居中

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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59

// 水平居中 1
#in {
margin: 0 auto;
text-align: center;
}
// 水平居中 2
#out {
display: flex;
flex-direction: column;
}
#in {
align-self: center;
}
// 水平居中 3
#out {
display: table-cell;
}
#in {
margin-left: 150px;
}
// 水平居中 4
#out {
position: absolute;
}
#in {
margin-left: 150px;
}
// 水平居中 5
#in {
width: fit-content;
margin: 0 auto;
text-align: center;
}
// 水平居中 6
#out {
display: inline-block;
}
#in {
margin: 0 auto;
text-align: center;
}
// 水平居中 7
#out {
position: relative;
}
#in {
float: left;
margin-left: 150px;
}
// 水平居中 8
#in {
height: 50%;
width: 50%;
text-align: center;
position: absolute;
left: 50%;
transform: translate(-25%, 25%);
}

垂直居中

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
29
30
31
32
33
34
35
36
37
38
39
40
// 垂直居中 1
#in {
display: inline-block;
vertical-align: middle;
}
// 垂直居中 2
#out {
display: flex;
flex-direction: row;
}
#in {
align-self: center;
}
// 垂直居中 3
#out {
display: table;
}
#in {
display: table-cell;
vertical-align: middle;
}
// 垂直居中 4
#in {
position: relative;
top: 50%;
transform: translateY(-50%);
}
// 垂直居中 5
#out {
position: relative;
}
#in {
position: absolute;
top: 50%;
transform: tranlateY(-50%);
}
// 垂直居中 6 (如果子元素为文本)
p#in {
line-height: 300px;
}