css - 为什么 Firefox 和 Chrome 在 flex 子项中呈现这个可滚动区域的方式不同,我如何让 Firefox 像 Chrome 一样工作?
问题描述
我正在构建一个工具栏,该工具栏在页面右侧具有动态数量的元素,其高度始终等于视口高度。
工具栏分为两个区域,如果包含的元素太多,则上部区域应该滚动。
但是,使用我的解决方案,在 Firefox 中,滚动条位于元素上方。在 Chrome 中,它按预期呈现并将要滚动的元素移到一边。
我搜索了一段时间,但我的搜索词与有关 min-height:0 和 min-width:0 的旧问题重叠,用于 flex 子问题。滚动条本身就在我找不到的可滚动区域内容上方的问题。
JSFiddle 上的复制:https ://jsfiddle.net/3o65an7m/4/
复制也复制到这里,但 imo 更容易在 JSFiddle 上看到问题:
html {
height: 400px;
}
body, .wrap {
height: 100%;
margin: 0;
}
.wrap {
display: flex;
flex-direction: column;
min-height: 0;
}
.right-bar {
flex-grow: 1;
display: flex;
flex-direction: column;
align-items: flex-end;
justify-content: space-between;
min-height: 0;
}
.upper {
flex-grow: 1;
overflow-y: auto;
}
.footer {
color: white;
width: 100%;
background: blue;
}
.b {
height: 20px;
width: 20px;
background: red;
margin: 4px;
padding: 4px;
}
<html>
<body>
<div class="wrap">
<div class="right-bar">
<div class="upper">
<div class="b"></div>
<div class="b"></div>
<div class="b"></div>
<div class="b"></div>
<div class="b"></div>
<div class="b"></div>
<div class="b"></div>
<div class="b"></div>
<div class="b"></div>
<div class="b"></div>
</div>
<div class="lower">
<div class="b"></div>
<div class="b"></div>
<div class="b"></div>
<div class="b"></div>
<div class="b"></div>
</div>
</div>
<div class="footer">Text</div>
</div>
</body>
</html>
图像比较;左 FF,右 Chrome。我希望这种行为在 Chrome 中始终可见:
解决方案
推荐阅读
- python-3.x - 如何计算字典值中出现的str
- python - 为什么会返回超出范围的索引?
- swift - 将一个 NSTextField 绑定到多个属性
- facebook - 使用 CMake 包括 Facebook/Folly
- python - How to Get ngrok https URL with pyngrok in Python
- syntax-error - Ocaml 无法识别 else
- python - 在混淆矩阵中从四面八方绘制标签
- matplotlib - 为什么当 ax = fig.add_subplot(2, 2, i+1) 时 ax.transData.transform([0.5, 0.5]) 和 ax.transAxes.transform([0.5, 0.5]) 给出相同的结果?
- haskell - 如何在 Haskell 中对 typeclass 进行分组
- java - Java中三元运算符中的char转换,打印int值而不是char值