CSS的水平居中和垂直居中方式

眉间皱痕 提交于 2020-03-08 22:02:28

水平居中

1.行内元素或行内块元素水平居中,即给其父元素添加text-align:center

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 
 4 <head>
 5     <meta charset="UTF-8">
 6     <meta name="viewport" content="width=device-width, initial-scale=1.0">
 7     <title>Document</title>
 8     <style>
 9         * {
10             padding: 0;
11             margin: 0;
12         }
13         
14         .wrapper {
15             height: 400px;
16             background-color: pink;
17             text-align: center;
18         }
19     </style>
20 </head>
21 
22 <body>
23 
24     <div class="wrapper">
25         <span class="center">text-align:center</span>
26     </div>
27 
28 </body>
29 
30 </html>

 

2.块级元素水平居中可以用margin:0 auto

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 
 4 <head>
 5     <meta charset="UTF-8">
 6     <meta name="viewport" content="width=device-width, initial-scale=1.0">
 7     <title>Document</title>
 8     <style>
 9         * {
10             padding: 0;
11             margin: 0;
12         }
13         
14         .wrapper {
15             height: 400px;
16             background-color: pink;
17         }
18         
19         .center {
20             width: 100px;
21             height: 100px;
22             background-color: blueviolet;
23             margin: 0 auto;
24             text-align: center;
25         }
26     </style>
27 </head>
28 
29 <body>
30 
31     <div class="wrapper">
32         <div class="center">margin:0 auto</div>
33     </div>
34 
35 </body>
36 
37 </html>

 

3.绝对定位+左负外边距(但要提前知道该居中元素的尺寸,且不利于后续尺寸的修改)

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 
 4 <head>
 5     <meta charset="UTF-8">
 6     <meta name="viewport" content="width=device-width, initial-scale=1.0">
 7     <title>Document</title>
 8     <style>
 9         * {
10             padding: 0;
11             margin: 0;
12         }
13         
14         .wrapper {
15             position: relative;
16             height: 400px;
17             background-color: pink;
18         }
19         
20         .center {
21             position: absolute;
22             width: 100px;
23             height: 100px;
24             background-color: blueviolet;
25             left: 50%;
26             margin-left: -50px;
27             text-align: center;
28         }
29     </style>
30 </head>
31 
32 <body>
33 
34     <div class="wrapper">
35         <div class="center">绝对定位+左负外边距</div>
36     </div>
37 
38 </body>
39 
40 </html>

 

4.绝对定位+translate

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 
 4 <head>
 5     <meta charset="UTF-8">
 6     <meta name="viewport" content="width=device-width, initial-scale=1.0">
 7     <title>Document</title>
 8     <style>
 9         * {
10             padding: 0;
11             margin: 0;
12         }
13         
14         .wrapper {
15             position: relative;
16             height: 400px;
17             background-color: pink;
18         }
19         
20         .center {
21             position: absolute;
22             width: 100px;
23             height: 100px;
24             background-color: blueviolet;
25             left: 50%;
26             transform: translateX(-50%);
27             text-align: center;
28         }
29     </style>
30 </head>
31 
32 <body>
33 
34     <div class="wrapper">
35         <div class="center">绝对定位+translate</div>
36     </div>
37 
38 </body>
39 
40 </html>

5.弹性布局(给父元素设置display:flex,justify-content: center;其行内子元素也可以直接设置宽高了)

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 
 4 <head>
 5     <meta charset="UTF-8">
 6     <meta name="viewport" content="width=device-width, initial-scale=1.0">
 7     <title>Document</title>
 8     <style>
 9         * {
10             padding: 0;
11             margin: 0;
12         }
13         
14         .wrapper {
15             display: flex;
16             height: 400px;
17             background-color: pink;
18             justify-content: center;
19         }
20         
21         .center {
22             width: 100px;
23             height: 100px;
24             background-color: blueviolet;
25         }
26     </style>
27 </head>
28 
29 <body>
30 
31     <div class="wrapper">
32         <span class="center">弹性布局</span>
33     </div>
34 
35 </body>
36 
37 </html>

垂直居中

1.单行文字垂直居中,即让文字的行高等于盒子的高度

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 
 4 <head>
 5     <meta charset="UTF-8">
 6     <meta name="viewport" content="width=device-width, initial-scale=1.0">
 7     <title>Document</title>
 8     <style>
 9         * {
10             padding: 0;
11             margin: 0;
12         }
13         
14         div {
15             width: 100px;
16             height: 100px;
17             background-color: coral;
18             line-height: 100px;
19         }
20     </style>
21 </head>
22 
23 <body>
24 
25     <div>单行文字</div>
26 
27 </body>
28 
29 </html>

2.绝对定位+上负外边距

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 
 4 <head>
 5     <meta charset="UTF-8">
 6     <meta name="viewport" content="width=device-width, initial-scale=1.0">
 7     <title>Document</title>
 8     <style>
 9         * {
10             padding: 0;
11             margin: 0;
12         }
13         
14         .wrapper {
15             position: relative;
16             height: 400px;
17             background-color: pink;
18         }
19         
20         .center {
21             position: absolute;
22             width: 100px;
23             height: 100px;
24             background-color: blueviolet;
25             top: 50%;
26             margin-top: -50px;
27             text-align: center;
28         }
29     </style>
30 </head>
31 
32 <body>
33 
34     <div class="wrapper">
35         <div class="center">绝对定位+上负外边距</div>
36     </div>
37 
38 </body>
39 
40 </html>

3.绝对定位+translate

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 
 4 <head>
 5     <meta charset="UTF-8">
 6     <meta name="viewport" content="width=device-width, initial-scale=1.0">
 7     <title>Document</title>
 8     <style>
 9         * {
10             padding: 0;
11             margin: 0;
12         }
13         
14         .wrapper {
15             position: relative;
16             height: 400px;
17             background-color: pink;
18         }
19         
20         .center {
21             position: absolute;
22             width: 100px;
23             height: 100px;
24             background-color: blueviolet;
25             top: 50%;
26             transform: translateY(-50%);
27             text-align: center;
28         }
29     </style>
30 </head>
31 
32 <body>
33 
34     <div class="wrapper">
35         <div class="center">绝对定位+上负外边距</div>
36     </div>
37 
38 </body>
39 
40 </html>

4.弹性布局(align-items:center)

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 
 4 <head>
 5     <meta charset="UTF-8">
 6     <meta name="viewport" content="width=device-width, initial-scale=1.0">
 7     <title>Document</title>
 8     <style>
 9         * {
10             padding: 0;
11             margin: 0;
12         }
13         
14         .wrapper {
15             display: flex;
16             height: 400px;
17             background-color: pink;
18             align-items: center;
19         }
20         
21         .center {
22             width: 100px;
23             height: 100px;
24             background-color: blueviolet;
25         }
26     </style>
27 </head>
28 
29 <body>
30 
31     <div class="wrapper">
32         <span class="center">弹性布局</span>
33     </div>
34 
35 </body>
36 
37 </html>

5.弹性布局(主轴方向从上到下)

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 
 4 <head>
 5     <meta charset="UTF-8">
 6     <meta name="viewport" content="width=device-width, initial-scale=1.0">
 7     <title>Document</title>
 8     <style>
 9         * {
10             padding: 0;
11             margin: 0;
12         }
13         
14         .wrapper {
15             display: flex;
16             height: 400px;
17             background-color: pink;
18             flex-direction: column;
19             justify-content: center;
20         }
21         
22         .center {
23             width: 100px;
24             height: 100px;
25             background-color: blueviolet;
26         }
27     </style>
28 </head>
29 
30 <body>
31 
32     <div class="wrapper">
33         <span class="center">弹性布局(主轴方向从上到下)</span>
34     </div>
35 
36 </body>
37 
38 </html>

6.绝对定位结合margin:auto

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 
 4 <head>
 5     <meta charset="UTF-8">
 6     <meta name="viewport" content="width=device-width, initial-scale=1.0">
 7     <title>Document</title>
 8     <style>
 9         * {
10             padding: 0;
11             margin: 0;
12         }
13         
14         .wrapper {
15             position: relative;
16             height: 400px;
17             background-color: pink;
18         }
19         
20         .center {
21             position: absolute;
22             width: 100px;
23             height: 100px;
24             background-color: blueviolet;
25             top: 0;
26             bottom: 0;
27             margin: auto;
28         }
29     </style>
30 </head>
31 
32 <body>
33 
34     <div class="wrapper">
35         <div class="center">绝对定位结合margin:auto</div>
36     </div>
37 
38 </body>
39 
40 </html>

7.display和vertical-align

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 
 4 <head>
 5     <meta charset="UTF-8">
 6     <meta name="viewport" content="width=device-width, initial-scale=1.0">
 7     <title>Document</title>
 8     <style>
 9         * {
10             padding: 0;
11             margin: 0;
12         }
13         
14         .wrapper {
15             display: table;
16             width: 400px;
17             height: 400px;
18             background-color: pink;
19         }
20         
21         .center {
22             display: table-cell;
23             vertical-align: middle;
24         }
25     </style>
26 </head>
27 
28 <body>
29 
30     <div class="wrapper">
31         <span class="center">display和vertical-align</span>
32     </div>
33 
34 </body>
35 
36 </html>

 

 

 

 

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!