# 面试回答

我的一个建议,你们可以参考,这种需求的话在我之前做的项目之中是非常常见的。之前的话我一般使用定位的方式:

.box {
    width: 500px;
    height: 500px;
    position: relative;
}
.sub-box {
    width: 100px;
    height: 50px;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    margin: auto;
}

或者

.box {
    width: 500px;
    height: 500px;
    position: relative;
}
.sub-box {
    position: absolute;
    width: 100px;
    height: 50px;
    top: 50%;
    left: 50%;
    margin-top: -25px;
    margin-left: -50px;
}

但是这种方式有一个问题,就是必须得知道sub-box的宽高。 那如果我们没有明确sub-box的宽高,可以使用css中的transform来解决这个问题,比如设置如下的样式:

.box {
    width: 500px;
    height: 500px;
    position: relative;
}
.sub-box {
    top: 50%;
    left: 50%;
    transform: translate(-50%,-50%);
}

但是在后面我学习了flex之后,我发现了使用flex解决这个问题的话会更加简洁,只需要设置子项在盒子里面的主轴和交叉轴的位置为中心就可以啦,如下样式:

.box {
    display: flex;
    /*主轴在中间*/
    justify-content: center;
    /*交叉轴在中间*/
    align-items: center;
}  
Last Updated: 5/30/2022, 4:19:48 PM