【发布时间】:2020-07-25 22:34:21
【问题描述】:
我在下面创建了一个简单的 JSFiddle。为什么我的粉色盒子 (.screen) 没有长到红色和蓝色盒子的全高?
我尝试在screen div 上设置height: 100%,但这使它从.inner-container 中生长出来,并将其置于.bottom 之上。
编辑
我在将.screen 放在.inner-container 之外有一个问题,我忘了说。当页面第一次初始化时,.screen 将有一个display:none,因为用户还没有开始屏幕共享。当用户点击按钮分享他的屏幕时,我会将.subscriber 设置为width: 10rem 并显示.screen。通过仅使用宽度,我可以将订阅者容器从中间“移动”到顶部。
编辑 2
要更多地展示我的目标,您可以从 .screen 中删除 flex: 0 1 100% 并添加 width: 100%; height: calc(100% - 10.5rem);。这感觉就像我应该能够使用 flex 但也许不能。
解决方案
我最终将.screen 移动到.inner-container 之外,并且我在.inner-container 上动态切换row 和column 之间的flex-direction 以获得所需的结果。请参阅@vals 回答,了解为什么现在无法使用 flex-box。
这里是 JSFiddle:https://jsfiddle.net/kejq01s2/2/
.outer-container {
height: 100vh;
background: yellow;
display: flex;
flex-direction: column;
}
.inner-container {
flex: 1;
display: flex;
flex-wrap: wrap;
}
.publisher {
width: 10rem;
height: 10rem;
background: red;
margin: .5rem;
}
.subscriber {
width: 10rem;
height: 10rem;
background: blue;
margin: .5rem;
}
.screen {
background: pink;
flex: 0 1 100%;
}
.bottom {
width: 100%;
height: 6rem;
background: green;
}
<div class="outer-container">
<div class="inner-container">
<div class="publisher"></div>
<div class="subscriber"></div>
<div class="screen"></div>
</div>
<div class="bottom"></div>
</div>
【问题讨论】:
-
您需要将屏幕制作在内容器之外
-
@TemaniAfif 我已经更新了我的问题。需要在
.inner-container中包含所有三个 div,这样我就可以在对象周围动态移动。 -
你没有考虑到
align-content: stretch的影响,这是弹性容器的默认设置。有关说明,请参阅重复的帖子。 -
另外,给粉色项设置一个高度,因为没有高度和内容,它可以缩小到0高度。
-
@Michael_B 据我了解,我添加了一个解释问题所在的答案