【发布时间】:2018-01-10 11:57:37
【问题描述】:
TL;DR:带有flex-direction: row 的弹性元素占据所有垂直空间并阻止其子元素中的滚动条。
first fiddle 显示了我想要实现的 UI 类型:它是一个横向和纵向延伸到整个屏幕的页面。它包含一个标题和一个主要的<div>,这是一个可滚动的项目列表。因此容器是一个column flexbox。注意它的宽度和高度都很好。
现在我想在主要内容中添加一个侧边栏,而 flexbox 似乎也很适合这个。我只是在flex-direction: row 中再添加一个<div id='main'>:见second fiddle。侧边栏显示正常,但这是一个问题。新的<div id='main'> 占据了所有垂直空间,因此项目列表永远不会有滚动条。
我试图限制高度<div id='main'>,它似乎有效。但是在代码方面很不方便,因为头部是一个单独的组件,所以一般来说它的高度对于主组件来说是unknown,我在设置height: calc(100vh - ...)之前已经计算过了。
有没有一种纯 CSS 方法来告诉 flexbox 容器不 垂直增长?或者我应该回到好的旧表 html 吗?
【问题讨论】:
-
将
overflow-y: auto;添加到main将显示滚动条。这就是你所追求的吗?如果我在这里错过了标记,请道歉。 -
您的
#container拥有overflow hidden。你的.items有它应该有的高度(在所有项目中),但#containers overflow hidden削减了它。这意味着您必须更改 .items 的高度 -
@sconner87 对我不起作用