首先介绍一下flex布局。
采用Flex布局的元素,称为Flex容器(flex container),简称“容器”。它的所有子元素自动成为容器成员,成为flex项目(flex item),简称“项目”。
容器默认存在两根轴:水平的主轴(main axis)和垂直的交叉轴(cross axis)。主轴的开始位置(与边框 的交叉点)叫做main start,结束位置叫做main end;交叉轴的开始位置叫做cross start,结束位置叫做cross end。项目默认沿主轴排列。单个项目占据的主轴空间叫做main size,占据的交叉轴空间叫做cross size。
利用flex实现元素水平垂直居中的两种方法:
html如下:
<div class="father"><div class="son"></div></div>
第一种方法(新方法)
父元素(容器)设置display属性为flex,并设置水平主轴上的元素居中,垂直交叉轴上的元素居中。
*{margin: 0;padding: 0}.father{width: 400px;height: 400px;border: 1px dashed black;display: flex;/*父元素设置flex属性*/justify-content: center;/*水平主轴居中*/align-items: center;/*垂直交叉轴居中*/}.son{width: 100px;height: 50px;background: pink;}
第二种方法(老方法)
父元素(容器)设置display为-webkit-box,并设置水平主轴上的元素居中,垂直交叉轴上的元素居中。
*{margin: 0;padding: 0}.father{width: 400px;height: 400px;border: 1px dashed black;display: -webkit-box;-webkit-box-pack: center;-webkit-box-align: center}.son{width: 100px;height: 50px;background: pink;}
上述两种方法效果是相同的,如下所示:
其实以上两种方法都是在父元素中分三步来实现,不过个人认为,还是新方法更好记一点儿吧,建议使用第一种方法。