css - 弹性项目内的可滚动div
问题描述
试图在 flex-item 中创建一个可滚动的 div。如果内容超出视口,此处的编辑部分应该是可滚动的。在 Edge 和 Firefox 中一切正常,但 Chrome 忽略max-height: 100%
. 我怎样才能达到预期的行为?
<html>
<head>
<title>test</title>
</head>
<body style="margin: 0">
<div id="root" style="height: 100vh; font-size: 100px">
<div id="form" style="max-height: 100%; display: flex; flex-direction: column; flex-wrap: nowrap;">
<div id="header" style="background-color: red; margin-bottom: 1px">header</div>
<div id="form-body" style="overflow: hidden; position: relative">
<div id="edit-section" style="overflow-y: scroll; max-height: 100%">
<div><textarea rows="10"></textarea></div>
<div><textarea rows="10"></textarea></div>
<div><textarea rows="10"></textarea></div>
<div><textarea rows="10"></textarea></div>
<div><textarea rows="10"></textarea></div>
<div><textarea rows="10"></textarea></div>
<div><textarea rows="10"></textarea></div>
<div><textarea rows="10"></textarea></div>
<div><textarea rows="10"></textarea></div>
<div><textarea rows="10"></textarea></div>
<div><textarea rows="10"></textarea></div>
</div>
</div>
</div>
</div>
</body>
</html>
解决方案
当您使用子元素的高度并且希望该元素溢出时 - 您需要对父元素应用高度。请记住,子元素的高度取决于它们所在的容器。
另外——最好不要使用内联样式——而是将你的 CSS 分离到它自己的文件中并将其导入到文档中。
html, body ,#root {
height: 100vh; font-size: 100px; overflow: hidden
}
#form {
height: 100%; display: flex; flex-direction: column; flex-wrap: nowrap;
}
#header {
background-color: red; margin-bottom: 1px
}
#form-body {
overflow: hidden; position: relative;height: 100%;
}
#edit-section {
overflow-y: scroll; height: 100%;
}
<div id="root">
<div id="form" >
<div id="header">header</div>
<div id="form-body">
<div id="edit-section">
<div><textarea rows="10"></textarea></div>
<div><textarea rows="10"></textarea></div>
<div><textarea rows="10"></textarea></div>
<div><textarea rows="10"></textarea></div>
<div><textarea rows="10"></textarea></div>
<div><textarea rows="10"></textarea></div>
<div><textarea rows="10"></textarea></div>
<div><textarea rows="10"></textarea></div>
<div><textarea rows="10"></textarea></div>
<div><textarea rows="10"></textarea></div>
<div><textarea rows="10"></textarea></div>
</div>
</div>
</div>
</div>
推荐阅读
- airflow - 在 Apache Airflow 中,如何在 Google Cloud SQL 数据库中获取“SELECT”语句的结果?
- ios - 尝试从自定义集合视图单元中解开标签时意外发现 nill
- python-3.x - 在用户输入上运行 str()、int()、float() 等时如何最有效地避免 ValueError
- android - 如何订阅在代码的其他部分发出的 Observable?
- ruby-on-rails - 如何在 MAC 上安装 Rails:在 MAC 上安装 Rails 时出错
- java - 用 Streams 替换 guava Fluent Iterables
- azure - MassTransit vs 官方 azure service bus 客户端 sdk
- javascript - 如何删除所有比调用函数的那个更大的“输入”元素?
- ios - 如何处理用户从 WKWebView 上传的图像或视频?
- vue.js - 通过 JavaScript 获取/设置 loadOnDemandBufferSize 或 loadMoreDataRequested