一尘不染

高度在Chrome的flexbox项中不正确

css

对于任何CSS专家来说,我都有一个棘手的问题。我的绿色div的高度灵活,可以容纳剩余的高度。现在我想在该div中放置一个div,该div应该是绿色div的一半。但似乎Chrome是否将其视为整个页面的一半而不是flex项目。

HTML

<body>
    <div id="wrapper">
        <div id="menu">
            1
        </div>
        <div id="content">2
            <div id="half_of_content">2.1</div>
        </div>
        <div id="footer" style="">
            3
        </div>
    </div>
</body>

CSS

html,body {
    height: 100%;
    margin: 0;
}

#wrapper {
    display: flex;
  flex-flow: column;
    height: 100%;
}

#menu {
    height: 70px; 
    background-color: purple
}

#content {
    flex: 1;
    height: 100%;
    background-color: green;
}

#half_of_content {
    height: 50%;
    background-color: yellow;
}

#footer {
    height: 100px; 
    background-color: cyan
}

阅读 341

收藏
2020-05-16

共1个答案

一尘不染

您可以绝对定位div id="half_of_content"

#content {
    flex: 1;
    height: 100%;
    background-color: green;
    position: relative; /* new */
}

#half_of_content {
    height: 50%;
    background-color: yellow;
    position: absolute; /* new */
    width: 100%; /* new */
}

关于您的声明:

但似乎Chrome是否将其视为整个页面的一半而不是flex项目。

您给bodyheight: 100%。然后给它的孩子(.wrapper)一个height: 100%。然后给它的孩子(.content)一个height: 100%因此它们的高度相等。
给下一个孩子(#half_of_contentheight: 50%自然会是的50%高度body

但是,在绝对定位的情况下,您无需指定父高度。

2020-05-16