有关如何防止弹性孩子成长的信息太多,但是很难找到如何防止弹性父母成长的原因(因为孩子)。
请考虑以下布局:
初始解决方案:
.layout {
display: flex;
flex-direction: column;
width: 640px;
height: 300px;
background: rgba(220, 20, 60, 0.2);
}
.header {
flex: 0 0 auto;
padding: 4px 8px;
background: rgba(220, 20, 60, 0.2);
}
.content {
display: flex;
flex-direction: column;
flex: 1 1 auto;
padding: 4px 8px;
background: rgba(255, 69, 0, 0.2);
overflow-y: hidden;
}
.title {
flex: 0 0 auto;
background: rgba(255, 255, 0, 0.2);
}
.splitView {
display: flex;
flex: 1 1 auto;
background: rgba(0, 128, 128, 0.2);
overflow-y: hidden;
}
.splitView-section {
display: flex;
flex-direction: column;
flex: 1 1 50%;
}
.splitView-section:first-child {
background: rgba(0, 191, 255, 0.2);
}
.splitView-section:last-child {
background: rgba(0, 0, 255, 0.2);
}
.scrollView {
flex: 1 1 auto;
background: rgba(165, 42, 42, 0.2);
overflow-y: auto;
}
.veryBigElement {
background: #CD5C5C;
width: 50px;
height: 500px;
box-shadow: rgba(0, 0, 0, 0.25) 0 0 6px
}
.footer {
flex: 0 0 auto;
padding: 4px 8px;
background: rgba(173, 255, 47, 0.2);
}
<div class="layout">
<div class="header">I am header</div>
<div class="content">
<div class="title">Title</div>
<div class="splitView">
<div class="splitView-section">
<div class="sectionTitle">Section title</div>
<div class="scrollView">
<div class="veryBigElement"></div>
</div>
</div>
<div class="splitView-section"></div>
</div>
</div>
<div class="footer">I am footer</div>
</div>
width: 640px
和height: 300px;
。flex: 0 0 auto
用于页眉和页脚。flex: 1 1 auto
。margin-top: auto
,因为主要内容已将其压到底部。overflow-y: auto
用于滚动视图。有效。但是有一个问题:如果由于overflow-y: hidden
和.splitView
的{{1}}而添加了一些带有阴影的元素(例如,卡片用于滚动视图),我们将看不到它的一部分。例如如果为.content
添加box-shadow: rgba(black, 0.25) 0 0 6px
,我们将看到:
因此,根据设计,可能不使用上述解决方案。如果我们从.veryBigElement
和overflow-y: hidden
中删除.splitView
,则.content
的增长将与splitView-section
的{{1}}无关。
请不要这样:
overflow-y: auto
的高度,甚至无法计算.scrollView
的高度:在实际应用中,它可能是很多内容,而不是'.title'。JSFiddle:https://jsfiddle.net/teyqkrh8/
答案 0 :(得分:1)
您可以删除“ overflow-y:隐藏”并将“高度:100%”添加到.splitView和-section。
.splitView{
display: flex
flex: 1 1 auto
background: rgba(#008080, 0.2)
height: 100%
&-section{
display: flex
flex-direction: column
flex: 1 1 50%
height: 100%
}
}
由于设置了父div的高度,因此子div将继承该高度。
答案 1 :(得分:1)
我知道这是一个老问题,但是无论如何对其他人还是有用的。
由于您不想对外部容器应用某些填充或对阴影元素应用边距,因此您可以简单地为阴影对象赋予z-index(大于任何外部元素的z-index(如果设置))属性元素,它将覆盖截止值。
答案 2 :(得分:0)
如果您将“ veryBigElement ”高度设置为500px,并且您希望主要内容不会滚动,则只能滚动内部元素。因此,您必须添加veryBigElement 父级的 MAX-HEIGHT 。如果您删除了溢出y:隐藏,则splitView-section不会增长。