【发布时间】:2017-07-25 06:11:30
【问题描述】:
我有两个容器需要共享其父级的高度,但第二个容器是按需动态添加的。两个容器中可能有很多内容,因此必须提供滚动的机会。
我有一个 50/50 共享的可行解决方案,但我想知道是否可以动态共享高度。
.wrapper__container {
display: flex;
height: 100%;
max-width: 100%;
flex-wrap: wrap;
align-items: flex-start;
}
.inside__container {
flex: 0 0 100%;
max-width: 100%;
overflow-y: auto;
}
部分包装组件渲染方法:
render() {
const maxHeight = this.state.showDetails ? '50%' : '100%';
const minHeight = this.state.showDetails ? '50%' : '100%';
return (
<div className="wrapper__container">
<Config
itemsGreen={this.state.itemsGreen}
itemsRed={this.state.itemsRed}
changeItemCount={this.changeItemCount}
/>
<Container
itemCount={this.state.itemsGreen}
className="inside__container"
style={{
backgroundColor: 'green',
maxHeight,
minHeight
}}
onClick={this.handleClick}
/>
{this.state.showDetails && <Container
itemCount={this.state.itemsRed}
className="inside__container"
style={{
backgroundColor: 'tomato',
maxHeight,
minHeight
}}
/>}
</div>
)
}
我设置了一个codepen,您可以在其中更改项目数以测试行为。单击绿色容器以显示红色容器。
至少将绿色容器的最大高度限制为 50% 并让红色容器占据其余部分是一个很好的解决方案。例如,如果绿色仅占 20%,则红色可以占 80%。
在一个完美的世界中,这应该可以在没有 js 计算的情况下实现,但如果有人有计算这个的想法(只有 react/vanilla)。
目标浏览器是IE11。
【问题讨论】:
-
要滚动哪个元素?您必须选择 一个 否则这无法用 CSS 解决。
-
它们都应该是可滚动的,我需要计算高度才能完成这项工作吗?
标签: javascript html css reactjs