html - flex-direction:单个孩子的“列”与“行”
问题描述
我有以下工作布局。.gallery-items
我想要一个仅用于元素的垂直滚动条。布局不应溢出.split-panel
容器。
意外地,我发现添加flex-direction: column
会.pane-2
破坏布局。
那么,问题是为什么会发生这种情况?
flex-direction: row
据我了解,flex-direction: column
如果只有一个子元素,应该没有区别。
body {
margin: 0;
}
.split-panel {
height: 100vh;
display: flex;
flex-direction: column;
}
.pane-2 {
overflow: hidden;
display: flex;
/* flex-direction: column; */
}
.gallery {
display: flex;
flex-direction: column;
}
.gallery-items {
display: flex;
flex-wrap: wrap;
overflow-y: auto;
}
.item {
background: teal;
width: 200px;
height: 200px;
margin: 10px;
display: flex;
}
<div class="split-panel">
<div class="pane-1">Content</div>
<hr />
<div class="pane-2">
<div class="gallery">
<div class="toolbar">
<h1>Title</h1>
</div>
<div class="gallery-items">
<div class="item">Item</div>
<div class="item">Item</div>
<div class="item">Item</div>
<div class="item">Item</div>
<div class="item">Item</div>
<div class="item">Item</div>
<div class="item">Item</div>
<div class="item">Item</div>
<div class="item">Item</div>
<div class="item">Item</div>
<div class="item">Item</div>
</div>
</div>
</div>
</div>
解决方案
因为列方向正在推动画廊元素高度以适应其内容。如果您将其设置为明确 100%,则它可以工作。
body {
margin: 0;
}
.split-panel {
height: 100vh;
display: flex;
flex-direction: column;
}
.pane-2 {
overflow: hidden;
display: flex;
flex-direction: column;
}
.gallery {
display: flex;
flex-direction: column;
height: 100%; // <--------------------
}
.gallery-items {
display: flex;
flex-wrap: wrap;
overflow-y: auto;
}
.item {
background: teal;
width: 200px;
height: 200px;
margin: 10px;
display: flex;
}
<div class="split-panel">
<div class="pane-1">Content</div>
<hr />
<div class="pane-2">
<div class="gallery">
<div class="toolbar">
<h1>Title</h1>
</div>
<div class="gallery-items">
<div class="item">Item</div>
<div class="item">Item</div>
<div class="item">Item</div>
<div class="item">Item</div>
<div class="item">Item</div>
<div class="item">Item</div>
<div class="item">Item</div>
<div class="item">Item</div>
<div class="item">Item</div>
<div class="item">Item</div>
<div class="item">Item</div>
</div>
</div>
</div>
</div>
推荐阅读
- python - 如何在二维数组中使用 scipy 最小化?
- jquery - 如何使用 jquery 隐藏或显示 bootstrap 4 折叠
- node.js - Angular 11 HttpClient Generic Observable 将服务值映射到一个类中
- c# - 使用 C# 的先到先服务 (FCFS) CPU 调度错误
- javascript - 如何将坐标数组格式化为不同的参考点
- python - slurm 在 bash 中获取工作 ID
- prolog - 用序言消除列表元素的连续重复
- excel - 用条件求时间差的公式
- flutter - 如何实现这张图片的下拉刷新和上拉加载更多功能?
- c - CMake 忽略自定义工具链文件。(缓存被清理)