html - 在 CSS flexbox 布局中,如果父级可垂直滚动,是否有办法将子块高度锁定到父级(滚动)高度?
问题描述
如果我有这样的 HTML 结构:
<div style="display: flex; align-items: stretch; height: 150px; overflow: auto">
<div style="background: red; width: 30px"></div>
<div style="background: yellow; flex-grow: 2; height: 200px"></div>
</div>
align-items: stretch
会将第一个孩子的高度设置为flexinnerHeight
元素的高度,而不是它的实际可滚动高度。因此,当您向下滚动时,红色背景会停在初始视口的底部。
height: 100%
有类似的问题(高度是相对于父母的外部尺寸)。
可以通过引入另一个包装元素并将overflow
andheight
样式移至该元素来解决此问题,但在我的情况下,由于其他原因,这很尴尬。有没有办法让所有的 flex 孩子都保持相同(完整)的高度而不这样做?
解决方案
使用 CSS 网格是否适合您的情况?
以下似乎可以满足您的要求:
<div style="
display: grid;
height: 150px;
overflow: auto;
grid-template-columns: min-content 1fr;
">
<div style="background: red; width: 30px">1</div>
<div style="background: yellow; height: 200px">hi</div>
</div>
推荐阅读
- compile-time - 如何使 proc 可用的编译时间和运行时间
- sql-server - SQL 函数,通过使用参数从表中返回值
- c++ - 字符串到枚举类的失败证明转换
- javascript - 根据 CSS 类更改 SVG 填充动画高度
- ionic-framework - 如何使用 Xcode 10 构建 Ionic Cordova?
- bash - 如何过滤类似 grep 的搜索以要求 3 个字符串按给定的顺序和距离排列?
- angular - 如何以优化的方式将样式文件导入 Angular +2 项目?
- prometheus - 在由 prometheus-operator helm chart 设置的 Kubernetes 集群上更新 Prometheus 安装的规则和配置的正确方法?
- jquery - 如何使 jquery 滑块重复?
- java - 如果 Hibernate TypedQuery 以 ) 结尾,则升级到版本 5 后会失败