html - 可以让子元素占据上一级父元素的 50% 吗?
问题描述
所以基本上我想在一行中有多个元素的画廊,直到该行被填满 - 然后它应该交换到下一行。
这一切正常,只是单个项目的父容器有 100% 的高度,所以孩子可以有 50% 的高度。结果是,底部的填充不可见,因为父容器不随其子容器一起增长:
#container { /* should not be touched */
height: 200px;
width: 400px;
overflow: auto;
}
#inner-container {
height: 100%;
width: 100%;
padding: 20px;
box-sizing: border-box;
display: flex;
flex-direction: row;
flex-wrap: wrap;
gap: 10px;
background-color: green;
}
.element {
height: 50%;
min-width: 150px;
flex-grow: 1;
flex-basis: calc(50% - 5px);
background-color: red;
}
<div id="container">
<div id="inner-container">
<div class="element"></div>
<div class="element"></div>
<div class="element"></div>
<div class="element"></div>
<div class="element"></div>
<div class="element"></div>
<div class="element"></div>
</div>
</div>
我试过的:
min-height: 100%
而不是height: 100%
- 导致孩子们只取他们的内容高度:
#container {
height: 200px;
width: 400px;
overflow: auto;
}
#inner-container {
min-height: 100%;
width: 100%;
padding: 20px;
box-sizing: border-box;
display: flex;
flex-direction: row;
flex-wrap: wrap;
gap: 10px;
background-color: green;
}
.element {
height: 50%;
min-width: 150px;
flex-grow: 1;
flex-basis: calc(50% - 5px);
background-color: red;
}
<div id="container">
<div id="inner-container">
<div class="element">test</div>
<div class="element"></div>
<div class="element"></div>
<div class="element"></div>
<div class="element"></div>
<div class="element"></div>
<div class="element"></div>
</div>
</div>
remove height
- 导致孩子们只取他们的内容高度:
#container {
height: 200px;
width: 400px;
overflow: auto;
}
#inner-container {
width: 100%;
padding: 20px;
box-sizing: border-box;
display: flex;
flex-direction: row;
flex-wrap: wrap;
gap: 10px;
background-color: green;
}
.element {
height: 50%;
min-width: 150px;
flex-grow: 1;
flex-basis: calc(50% - 5px);
background-color: red;
}
<div id="container">
<div id="inner-container">
<div class="element">test</div>
<div class="element"></div>
<div class="element"></div>
<div class="element"></div>
<div class="element"></div>
<div class="element"></div>
<div class="element"></div>
</div>
</div>
有没有办法让内部容器height: 100%
,但如果需要,可以增长?还是直接height: auto
让孩子拿50%的#container
?
解决方案
只需将溢出添加到内部容器中:
#container { /* should not be touched */
height: 200px;
width: 400px;
overflow: auto;
}
#inner-container {
height: 100%;
overflow: auto;
padding: 20px;
box-sizing: border-box;
display: flex;
flex-direction: row;
flex-wrap: wrap;
gap: 10px;
background-color: green;
}
.element {
height: 50%;
min-width: 150px;
flex-grow: 1;
flex-basis: calc(50% - 5px);
background-color: red;
}
<div id="container">
<div id="inner-container">
<div class="element"></div>
<div class="element"></div>
<div class="element"></div>
<div class="element"></div>
<div class="element"></div>
<div class="element"></div>
<div class="element"></div>
</div>
</div>
推荐阅读
- ruby-on-rails - Hotwire rails 应用程序:重定向到外部服务失败
- java - 如何识别 Redis 是否已关闭或是否正在运行?
- ios - 如何使用 Localizable.string 文件在 iOS 中使部分文本变为粗体?
- python - 按列表排序嵌套列表
- django - Django 不显示静态图像,但通过在控制台窗口中显示 ["GET /static/image/down.jpg HTTP/1.1" 404 1771] 来显示其替代文本(alt)
- ios - iOS - 在带有 SFSafariViewController 的应用程序中无法在 iframe 中加载另一个主机
- jquery - 如何在 Vue.js 方法中使用 jquery 访问表数据
- docker - 在 Docker 容器/静默安装的 Ubuntu 20.04 上安装 Erlang/Elixir
- postgresql - 使用 typeorm 和 type-graphql 从 DB 检索数据时出错
- python - 在 libpysal 中计算空间权重的正确方法