【问题标题】:Why margin auto in flex makes vertical and horizontal centered [duplicate]为什么flex中的margin auto使垂直和水平居中[重复]
【发布时间】:2018-06-08 19:43:57
【问题描述】:

这是一个 CSS 问题,如果我们将 margin: auto 置于正常流中,则只有左右边距空间被平均。但是,如果我们将 'margin: auto` 放在一个 flex 项目上,该项目在水平和垂直方向上都居中,这是为什么呢?

代码如下:

#one {
    width:300px;
    height:300px;
    border:solid 2px black;
    margin:auto;
    display:flex;
}

#two {
    width:100px;
    height:100px;
    background:red;
    margin:auto;
}
<div id = "one">
 <div id ="two"></div> 
</div>

期待任何意见!

【问题讨论】:

    标签: html css flexbox


    【解决方案1】:

    flex 的功能是根据父 div 的高度和宽度计算各个方向的边距,

    1. 高度和宽度为 300px 的 div#one

    2. 高度和宽度为 100px 的 div#two

    所以边距计算为margin:100px;

    这意味着

    #two{
    margin-top:100px;
    margin-right:100px;
    margin-bottom:100px;
    margin-left:100px;
    }
    

    如果您只需要水平边距,请使用margin:0 auto;

    【讨论】:

    • 是否有任何文件指定 flex 将计算所有方向的边距?
    • "在通过 justify-content 和 align-self 对齐之前,任何正的可用空间都会分配到该维度的自动边距。" w3.org/TR/css-flexbox-1/#auto-margins
    • 如果您对答案满意可以接受吗?
    • 太棒了!谢谢好人。
    猜你喜欢
    • 1970-01-01
    • 2012-05-11
    • 2012-01-27
    • 2012-12-16
    • 2013-10-14
    • 2020-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多