gpt4 book ai didi

html - 如何更改 CSS flex-box 列的宽度?

转载 作者:太空狗 更新时间:2023-10-29 16:00:27 25 4
gpt4 key购买 nike

我有一个 menu div,它填充了 100% 的容器高度,在它旁边,右边是 headerbodyfooter 部分。

我设法用 CSS flex 属性 做到了这一点。但是,我想更改 "menu" div 从容器中取出的宽度,例如,使其成为 容器宽度的 10%,并使rest div 填充剩下的内容(即使 “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 是什么,但我认为它们只会影响(在这种情况下)高度?

谢谢。

最佳答案

您必须在右列周围添加一个包装器,然后仅在 .menu 元素上指定 flex-basis

.container {
display: flex;
width: 75%;
height: 500px;
position: relative;
margin: 0 auto;
height: 500px;
overflow: hidden;
}

.right-col {
flex-flow: column wrap;
flex-grow: 1;
height: 100%;
display: flex;
}

.menu {
flex-basis: 10%;
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="right-col">
<div class="header">Header</div>
<div class="body">Body</div>
<div class="footer">Footer</div>
</div>
</div>

fiddle :https://jsfiddle.net/jf29vr0x/11/

现在,当菜单隐藏时,右侧的列会全部展开。

关于html - 如何更改 CSS flex-box 列的宽度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28998490/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com