对于任何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 }
您可以绝对定位div id="half_of_content"。
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项目。
您给body了height: 100%。然后给它的孩子(.wrapper)一个height: 100%。然后给它的孩子(.content)一个height: 100%。 因此它们的高度相等。 给下一个孩子(#half_of_content)height: 50%自然会是的50%高度body。
body
height: 100%
.wrapper
.content
#half_of_content
height: 50%
但是,在绝对定位的情况下,您无需指定父高度。