【发布时间】:2015-05-13 22:38:27
【问题描述】:
我有一个 menu div,它填充了 100% 的容器高度,在它旁边右侧是 标题 em>、body 和 footer 部分。
我设法用CSS flex property 做到了这一点。但是,我想更改"menu" div 从容器中取出的宽度量,例如,将其设为10% width of container's width,并设置rest divs fill what's left(即使"menu" div 稍后隐藏)。
JS Fiddle 我现在拥有的东西:https://jsfiddle.net/jf29vr0x/3/
.container {
display: flex;
flex-flow: column wrap;
width: 75%;
height: 500px;
position: relative;
margin: 0 auto;
}
.menu {
flex: 0 0 100%;
background: lightblue;
}
.header {
flex: 0 0 10%;
background: lightgray;
}
.body {
flex: 0 0 80%;
background: purple;
}
.footer {
flex: 0 0 10%;
background: lightgreen;
}
<div class="container">
<div class="menu">
Menu
</div>
<div class="header">
Header
</div>
<div class="body">
Body
</div>
<div class="footer">
Footer
</div>
</div>
我发现如果我在“菜单”类上明确设置宽度,它会调整它的大小,但其余的框不会填满剩下的空间,除非我也明确地将它们的宽度声明为 100%。但是,这样做会使容器溢出,并且由于容器与中心对齐,因此看起来会偏离。
我也可以将宽度设置为 90%(在页眉、页脚正文上)和 10% 在菜单上,但菜单有时设置为 display: none;,所以当它消失时,其他布局部分只会为容器宽度的 90%。
有没有办法只使用 flex-box 属性来做到这一点?我不太了解 flex-shrink 和 flex-grow 是关于什么的,但我认为它们只会影响(在这种情况下)高度?
谢谢。
【问题讨论】:
-
这对你有用吗? jsfiddle.net/jf29vr0x/6 删除显示无并显示显示内联块,使其在页眉/正文/页脚上以 100% 宽度溢出,但溢出被隐藏,当菜单设置为不显示时,有没有溢出效果。否则,flex 可能不是你的答案,或者需要 JS
-
嗯,问题是,如果你 text-align: right 或 text-align: 例如,将文本放在标题 div 上居中,那么文本会关闭或完全消失(因为它超出了到隐藏的溢出)。就像在这里:jsfiddle.net/jf29vr0x/8。我想也许 flex-boxes 不适合这个,如果你可以同时设置它们的宽度和高度会很酷,尽管它们是行或列......