html - 禁止父 div 宽度动态高度扩展以适应子内容
问题描述
我有一个container
适合整个视口的nav
,main
和footer
节点。该main
节点需要填充页面的所有可用空间,因此它的高度是动态的。在main
节点内部,我有一个简短的节点层次结构,其中cats
节点可能不适合父节点。
<div class="container">
<nav>
<input />
</nav>
<main>
<div class="scrollable">
<div class="cats">
<img src="https://placekitten.com/300/300" />
<img src="https://placekitten.com/300/300" />
<img src="https://placekitten.com/300/300" />
<img src="https://placekitten.com/300/300" />
</div>
</div>
<div class="cat">
<img src="https://placekitten.com/280/280" />
</div>
</main>
<footer>
<button>
Click me!
</button>
</footer>
</div>
我想强制scrollable
节点填充main
父节点,但是当它的子节点溢出时,显示一个垂直滚动条。无论如何,我不希望main
节点调整大小以适应子级,导致内容不适合视口。
html {
height: 100%;
}
body {
height: 100%;
margin: 0;
}
.container {
height: 100%;
display: flex;
flex-direction: column
}
main {
flex: 1;
display: flex;
}
.scrollable {
flex: 1;
display: flex;
overflow-y: scroll;
}
.cats {
flex: 1;
display: grid;
grid-auto-columns: 1fr;
grid-gap: 10px;
}
该解决方案在 Chrome 下有效。它不在 Firefox 下。我觉得这条链flex
不是要走的路。我将感谢任何如何使它更普遍的点击。
这是一个工作小提琴:https ://jsfiddle.net/ktguLn73/13/
有趣的是,当我安装overflow-y: scroll
节点main
时,它可以在 Chrome 和 Firefox 中运行。但这不是我喜欢的结果。
感谢您的帮助。
解决方案
我记得读过一篇有类似问题的文章,其中 Firefox 无法使用 flex oveflow 滚动。查看此页面,看看它是否有帮助:https ://moduscreate.com/blog/how-to-fix-overflow-issues-in-css-flex-layouts/
通读文章,容器上的 min-height: 0 解决了 Firefox 中布局的问题。
推荐阅读
- javascript - 无法使用 BeautifulSoup、Selenium 获取网页的所有 HTML 内容
- python - 解决 Python 2.7 环境中的包冲突
- docker - 如何在 docker 19.03 中不使用命令“--gpus all”将所有 GPU 暴露给 Kubernetes?
- android - 如何限制用户可以拖放到特定布局的对象数量?
- xml - XML 文件更改
- java - Java 数据库实体继承
- python - 有什么方法可以在for循环中保存多个图而不用python覆盖?
- java - 创建具有两种类型边的连通图
- reactjs - 电容器插件在 android build 上显示为未定义
- r - 如何计算数据集的第 99 个百分位数