Hob*_*ist 15 html css css3 flexbox
我的页面上有一个动态页脚,我希望它上面的内容可以扩展到页脚的顶部,这很好,但是我遇到了一个问题:
#snippet-container {
height: 300px;
width: 200px;
}
#page {
display: flex;
flex-flow: column;
height: 100%;
}
#content {
flex: 1 1 auto;
background: blue;
}
#content .test {
width: 100%;
height: 100%;
background: yellow;
border: 2px solid red;
}
#footer {
flex: 0 1 10vh;
background: black;
}Run Code Online (Sandbox Code Playgroud)
<div id="snippet-container">
<div id="page">
<div id="content">
<div class="test"></div>
</div>
<div id="footer"></div>
</div>
</div>Run Code Online (Sandbox Code Playgroud)
我希望.test元素填充#content元素,因此100%/100% width/height它不会.
当我.test在片段中为元素添加红色边框时,您可以看到这反映出来.
Ric*_*cky 20
问题:
问题是,你的#pageFlex容器没有达到的.test元素,因为.test是不是一个孩子,这是Flex项目的后代.
Flex容器的内容由零个或多个flex项组成:flex容器的每个子项都变为flex项.
每个flex项都受Flex容器的影响,但flex项的后代不受影响.
解:
你需要添加display: flex到你的#content.
代码链:
#snippet-container {
height: 300px;
width: 200px;
}
#page {
display: flex;
flex-flow: column;
height: 100%;
}
#content {
display: flex;
height: 100%;
background: blue;
}
#content .test {
width: 100%;
background: yellow;
border: 2px solid red;
}
#footer {
flex: 0 1 10vh;
background: black;
}Run Code Online (Sandbox Code Playgroud)
<div id="snippet-container">
<div id="page">
<div id="content">
<div class="test"></div>
</div>
<div id="footer"></div>
</div>
</div>Run Code Online (Sandbox Code Playgroud)
这适合你:
https://jsfiddle.net/wjr0wwht/2/
为了使'test'db增长到全高,你需要使内容也display: flex像这样:
#content {
flex: 1 1 auto;
background: blue;
display: flex;
flex-direction: column;
}
Run Code Online (Sandbox Code Playgroud)
然后让测试本身成长:
#content .test {
background: yellow;
border: 2px solid red;
flex-grow: 1;
}
Run Code Online (Sandbox Code Playgroud)