在下面的情况下,为什么<header>
的高度会降低?据我所知,<header>
应该保留flex-basis
声明的高度,<div class="content-wrapper">
应该占用剩余的空间。直到它包含的内容比可用空间高,这才有效。在这种情况下,<header>
部分塌陷。
main {
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
display: flex;
flex-direction: column;
}
header {
flex-basis: 50px;
background: red;
}
.content-wrapper {
background: blue;
flex: 2;
overflow-y: auto;
}
.content {
height: 1000px;
background: green;
}
<main>
<header></header>
<div class="content-wrapper">
<div class="content"></div>
</div>
</main>
如果全屏运行代码段并更改高度,则标题高度将相对于屏幕高度而改变。我希望它保持固定在50px。
2条答案
按热度按时间xwbd5t1u1#
@Eric Martinez的评论是正确的。要防止元素收缩,请将
flex-shrink
设置为0。https://css-tricks.com/snippets/css/a-guide-to-flexbox/
utugiqy62#
为Necro的帖子道歉,但是Google让我来这里是因为我的弹性基础问题被忽略了,这是因为与OP不同的原因,但这可能会帮助到那里的人。我试图使图像并排排列,大小相等,但一些不可 Package 的文本迫使一个框大于我设置的弹性基础,导致布局中断。
在我的例子中,修正是添加
overflow-wrap: anywhere
,这样文本就可以 Package 了,布局引擎可以强制flex项为父项宽度的25%。我实际上是用
figcaption
和gap
规则在元素之间布局figure
元素,这意味着简单的flex-basis: 25%
不起作用,所以为了加分,这里使用calc()
来设置每个元素的flex-basis
,尽管不可否认这有点黑客,因为它涉及到知道子元素的数量和差距大小。