html - 使 div 根据父级大小增长和缩小
问题描述
我正在尝试创建一个使其大小适应容器大小的小部件。小部件可以展开,以便显示额外的信息。我有三行,我正在寻找的行为是:
- 第一行的大小取决于内容
- 第二行的行为与第一行相同
- 第三个必须填充可用的垂直空间,使其内容在展开时可滚动。折叠时,小部件必须在父容器中垂直居中
我为颜色道歉,但他们应该给出一个更好的主意。这是我目前拥有的:
在这种情况下,小部件(白色背景)被折叠并在父容器(红色背景)中居中。当我单击打开时,第一行内容和第二行(仅包含按钮)必须保持相同大小,第三行必须扩展以填充可用空间。这是目前发生的情况:
小部件(白色背景)正确扩展以填充父级,但扩展行(黑色背景)溢出。我正在寻找的是这个(白色的 bg 应该填满父母,对不起):
这是代码(忽略填充和颜色,这样做是为了提供更好的想法,以及@click
处理程序):
<div id="searchWidget">
<div class="row no-row-padding">
<div class="col-12" style="background-color: blue;">
<p style="color: white">First row of content</p>
</div>
</div>
<div class="row">
<div class="col-12">
<hr class="solid">
</div>
</div>
<div class="row no-row-padding">
<button class="btn btn-outline-primary actionButton" type="button" @click="showAdvancedOptions">Open</button>
</div>
<div class="row" id="advancedOptions" style="background-color: black; margin-left: 10px; margin-right: 10px">
<div class="col-12" style="background-color: purple">
<div class="collapse" ref="advancedOptionsCollapse" style="background-color: yellow">
<p>Hello World</p>
<p>Hello World</p>
<p>Hello World</p>
<p>Hello World</p>
<p>Hello World</p>
<p>Hello World</p>
<p>Hello World</p>
<p>Hello World</p>
<p>Hello World</p>
<p>Hello World</p>
<p>Hello World</p>
<p>Hello World</p>
<p>Hello World</p>
<p>Hello World</p>
<p>Hello World</p>
<p>Hello World</p>
<p>Hello World</p>
<p>Hello World</p>
<p>Hello World</p>
<p>Hello World</p>
</div>
</div>
</div>
</div>
这是CSS:
#searchWidget {
padding: 16px;
max-height: 100%;
width: 100%;
background-color: white;
display: flex;
flex-flow: column;
}
我使用 flex 尝试了所有可能的组合,但我很难找到一种有效的组合。我已尝试设置所有可能的flex
组合,但找不到可以扩展和收缩第三行的组合。
我正在使用 Bootstrap 4.0.0 和折叠组件,以及 Vue.js(如果有帮助的话)。
任何帮助是极大的赞赏
解决方案
如果你把它放在overflow:hidden
父级(searchWidget)上,它应该工作,overflow:auto
在第三行..
https://www.codeply.com/p/qyAqKJlMTz
<div id="searchWidget" class="vh-100 d-flex flex-column overflow-hidden justify-content-center">
<div class="row no-row-padding">
<div class="col-12" style="background-color: blue;">
<p style="color: white">First row of content</p>
</div>
</div>
<div class="row">
<div class="col-12">
<hr class="solid">
</div>
</div>
<div class="row no-row-padding">
<button class="btn btn-outline-primary actionButton" type="button" @click="showAdvancedOptions()">Open</button>
</div>
<div class="row overflow-auto" id="advancedOptions" style="background-color: black; margin-left: 10px; margin-right: 10px">
<div class="col-12" style="background-color: purple">
<div :class="collapseClasses" ref="advancedOptionsCollapse" style="background-color: yellow">
<p>Hello World</p>
<p>Hello World</p>
...
</div>
</div>
</div>
</div>
推荐阅读
- dbt - dbt 关系测试编译错误:测试定义字典必须只有一个键
- c++ - 如何识别数组或矩阵中的元素并正确使用它们?C++
- java - 如何为 Java spring boot websocket 客户端设置 live url?
- python - 来自给定坐标列表的 MST
- vue.js - 访问子组件中的嵌套道具
- c - 在内核模块中执行 strstr() 导致崩溃
- android-studio - 验证 Subversion Android Studio 项目构建:来自 SVN 的新项目
- python - 效果好的模型会过拟合吗?
- vue.js - Vuetify v-select 大字体大小裁剪
- c# - 单元测试时参考版本差异