html - 在 flexbox 实现的第二列中创建一个可滚动的 div
问题描述
我有以下代码,包括:
- 我正在使用的左侧区域,
flex-shrink: 0
以便文本不会被破坏。 - 一个应该占用剩余屏幕空间的正确区域
- 一个可滚动的 div 包含一个应该包含在正确空间中的表
问题是可滚动的 div 没有包含在右侧空间中。
我究竟做错了什么?
如何确保 div 实际滚动并且不会超出屏幕宽度?使用固定宽度的组件很容易,但是如何使用可变宽度的屏幕呢?
html, body {
width: 100%;
}
.outer {
display: flex;
width: 100%;
}
.left {
flex-shrink: 0;
margin-right: 15px;
background-color: #ddd;
}
.right {
flex: 1
}
.scrollable_box {
width: 100%;
overflow-X: scroll;
border: solid black 1px;
}
.title {
text-align: center;
font-weight: bold;
}
<html>
<body>
<div class="outer">
<div class="left">
<div>Some Item Here</div>
<div>Some Other Item Here</div>
<div>Another Item</div>
</div>
<div class="right">
<div class="title">Welcome to the Home of the scrollable Box</div>
<p>This box you see below should not extend beyond the screen</p>
<p>Notice how the title also appears far to the right because of this issue</p>
<div class="scrollable_box">
<table>
<tbody>
<tr>
<td>Sample</td>
<td>Sample</td>
<td>Sample</td>
<td>Sample</td>
<td>Sample</td>
<td>Sample</td>
<td>Sample</td>
<td>Sample</td>
<td>Sample</td>
<td>Sample</td>
<td>Sample</td>
<td>Sample</td>
<td>Sample</td>
<td>Sample</td>
<td>Sample</td>
<td>Sample</td>
<td>Sample</td>
<td>Sample</td>
<td>Sample</td>
<td>Sample</td>
<td>Sample</td>
<td>Sample</td>
<td>Sample</td>
<td>Sample</td>
<td>Sample</td>
<td>Sample</td>
<td>Sample</td>
<td>Sample</td>
<td>Sample</td>
<td>Sample</td>
<td>Sample</td>
<td>Sample</td>
<td>Sample</td>
<td>Sample</td>
<td>Sample</td>
<td>Sample</td>
<td>Sample</td>
<td>Sample</td>
<td>Sample</td>
<td>Sample</td>
<td>Sample</td>
<td>Sample</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</body>
</html>
解决方案
经过几个小时试图弄清楚这一点,看起来我所要做的就是添加min-width: 0;
到右侧的 flexbox 中。
我不确定这是否是一种“hacky”方式来实现这一点,或者是否有合适的方式我应该这样做。我将不胜感激这方面的任何反馈。
请参阅此处了解更多信息。
html, body {
width: 100%;
}
.outer {
display: flex;
width: 100%;
}
.left {
flex-shrink: 0;
margin-right: 15px;
background-color: #ddd;
}
.right {
flex: 1;
min-width: 0;
}
.scrollable_box {
width: 100%;
overflow-X: scroll;
border: solid black 1px;
padding-bottom: 15px;
}
.title {
text-align: center;
font-weight: bold;
}
<html>
<body>
<div class="outer">
<div class="left">
<div>Some Item Here</div>
<div>Some Other Item Here</div>
<div>Another Item</div>
</div>
<div class="right">
<div class="title">Welcome to the Home of the scrollable Box</div>
<p>This box you see below should not extend beyond the screen</p>
<p>Notice how the title also appears far to the right because of this issue</p>
<div class="scrollable_box">
<table>
<tbody>
<tr>
<td>Sample</td>
<td>Sample</td>
<td>Sample</td>
<td>Sample</td>
<td>Sample</td>
<td>Sample</td>
<td>Sample</td>
<td>Sample</td>
<td>Sample</td>
<td>Sample</td>
<td>Sample</td>
<td>Sample</td>
<td>Sample</td>
<td>Sample</td>
<td>Sample</td>
<td>Sample</td>
<td>Sample</td>
<td>Sample</td>
<td>Sample</td>
<td>Sample</td>
<td>Sample</td>
<td>Sample</td>
<td>Sample</td>
<td>Sample</td>
<td>Sample</td>
<td>Sample</td>
<td>Sample</td>
<td>Sample</td>
<td>Sample</td>
<td>Sample</td>
<td>Sample</td>
<td>Sample</td>
<td>Sample</td>
<td>Sample</td>
<td>Sample</td>
<td>Sample</td>
<td>Sample</td>
<td>Sample</td>
<td>Sample</td>
<td>Sample</td>
<td>Sample</td>
<td>Sample</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</body>
</html>
推荐阅读
- javascript - 在 html 正文之前预加载画布?
- html - css中的独立滚动列布局
- python - 将熊猫数据集转换为 matplotlib 图:有没有办法将值附加到 y 值列表?
- excel - 使用 Laravel Excel 导入 excel 时计算公式
- spring-boot - 跟踪/跟踪 JSON 对象(时间序列数据)流经 IOT 平台上的微服务系统的最佳方法
- dataframe - 如何一次旋转两列?
- mysql - Q.nfcall:TypeCast 因未指定的错误而失败
- r - 如何在多面图中仅向一个面板添加垂直线和水平线?
- google-api - 如何通过 url 中包含 access_token 的 HTTP 请求下载驱动文件?
- arrays - 如何在vba中有效地分割二维数组