参考答案
我们在布局一个页面时,通常都会用到水平居中和垂直居中,处理水平居中很好处理,不外乎就是设定margin:0 auto;或是text-align:center;,就可以轻松解决掉水平居中的问题,但一直以来最麻烦对齐问题就是「垂直居中」,以下将介绍几种单纯利用CSS垂直居中的方式,只需要理解背后的原理就可以轻松应用。
下面为公共代码:
<div class="box"> <div class="small">small</div> </div>
.box { width: 300px; height: 300px; background: #ddd; } .small { background: red; }
absolute + margin实现
方法一:
.box { position: relative; } .small { position: absolute; top: 50%; left: 50%; margin: -50px 0 0 -50px; width: 100px; height: 100px; }
方法二:
.box { position: relative; } .small { position: absolute; top: 0; right: 0; bottom: 0; left: 0; margin: auto; width: 100px; height: 100px; }
absolute + calc 实现
.box { position: relative; } .small { position: absolute; top: calc(50% - 50px); left: calc(50% - 50px); width: 100px; height: 100px; }
absolute + transform 实现
.box { position: relative; } .small { position: absolute; top: 50%; left: 50%; transform: translate3d(-50%,-50%,0); width: 100px; height: 100px; }
转行内元素
.box { line-height: 300px; text-align: center; font-size: 0px; } .small { padding: 6px 10px; font-size: 16px; display: inline-block; vertical-align: middle; line-height: 16px; }
table-cell
.box {
display: table-cell;
text-align: center;
vertical-align: middle;
}
.small {
padding: 6px 10px;
display: inline-block;
}
flex
方法一:
.box { display: flex; justify-content: center; align-items: center; }
方法二:
.box { display: flex; justify-content: center; } .small { align-self: center; }
08 grid
网格布局(Grid)是最强大的 CSS 布局方案。
它将网页划分成一个个网格,可以任意组合不同的网格,做出各种各样的布局。以前,只能通过复杂的 CSS 框架达到的效果,现在浏览器内置了。
下面是4种使用grid实现水平垂直居中的例子。
方法一:
.box { display: grid; justify-items: center; align-items: center; }
方法二:
.box { display: grid; } .small { justify-self: center; align-self: center; }
方法三:
.box { display: grid; justify-items: center; } .small { align-self: center; }
方法四:
.box { display: grid; align-items: center; } .small { justify-self: center; }
正文结束
Ctrl + Enter