行内元素水平居中
只需要给父元素设置 text-align:center;
即可。
1 2 3
| <div> <span>行内水平居中</span> </div>
|
1 2 3 4
| div { border:1px solid red; text-align:center; }
|
块级元素水平居中
定宽
margin: 0 auto;
块级元素的 width
一定时,只需要给需要居中的块级元素设置 margin: 0 auto;
即可。
1 2 3 4 5
| div { width: 200px; border: 1px solid red; margin: 0 auto; }
|
position + margin-left
使用绝对定位,然后设置 left: 50%;
以及 margin-left
设置为负数的宽度的一半。
1 2 3 4 5 6 7
| div { border: 1px solid red; position: absolute; width: 80px; left: 50%; margin-left: -40px; }
|
position + left + right + margin
使用绝对定位,然后给 left
、right
都设置为 0
,然后再设置 margin:0 auto;
即可。
1 2 3 4 5 6 7 8
| div { border: 1px solid red; position: absolute; width: 80px; left:0; right:0; margin:0 auto; }
|
不定宽
table + margin
当宽度不固定时,给居中的元素设置 display: table;
和 margin: 0 auto;
即可。
1 2 3 4 5
| div { border: 1px solid red; margin: 0 auto; display: table; }
|
inline-block + text-align
当有一个或多个块级元素时,给父元素设置 text-align: center;
,然后给子元素设置 display: inline-block;
即可。
1 2 3 4
| <div class="father"> <div class="son">son1</div> <div class="son">son2</div> </div>
|
1 2 3 4 5 6 7 8
| .father { border: 1px solid green; text-align: center; } .son { border: 1px solid red; display: inline-block; }
|
flex
只需要给父元素设置 display: flex;
和 justify-content: center;
即可。
1 2 3 4
| <div class="father"> <div class="son">son1</div> <div class="son">son2</div> </div>
|
1 2 3 4 5
| .father { border: 1px solid green; display: flex; justify-content: center; }
|
1 2 3 4 5 6
| div { border: 1px solid red; position: absolute; left: 50%; transform: translateX(-50%); }
|