table 个单元格中的滚动条
Scroll bars in table cells
我想要一个占据整个屏幕的 table,它有侧边栏、底部栏和主面板。每个都应该能够独立滚动,并且在任何情况下整个页面都不应有滚动条。
这是我的:
<div style="width: 100%; height: 100%; display:block;">
<table style="position: absolute; width: 100%; height: 100%; border-collapse: separate; border-spacing: 1px;">
<tbody style="height:100%">
<tr>
<td id="sidebar" style="width: 200px; height: 100%; vertical-align: top;" rowspan="2">
<div style="width: 200px;height: 100%;margin: 0;padding: 0;overflow-y: scroll;overflow-x:auto;">
Side
</div>
</td>
<td id="stepeditor" style="vertical-align: top; position: relative; display: block; width: 100%; height: 100%;">
<div style="position: relative; width: 100%; height: 100%; margin: 0; padding: 0; overflow: scroll;">
main
</div>
</td>
</tr>
<tr>
<td style="vertical-align: top; height: 200px; border-top: 1px solid;">
<div style="width: 100%; height: 200px; margin: 0; padding: 0; overflow: scroll;">
bottom
</div>
</td>
</tr>
</tbody>
</table>
</div>
我一直在摆弄很多选项,目前只有侧边栏能按我的意愿工作,但完整的上仍然有滚动条window,我不知道它们为什么在那里.
如何让它正常工作?
解决方案:https://jsfiddle.net/mj0baug5/
每个面板使用 overflow-x:hidden; overflow-y:scroll;
而不是 overflow:auto
。这将启用垂直滚动但不启用水平滚动。
要限制页面滚动,请使用:
body {
overflow: hidden;
}
你的风格问题。
正文需要设置margin:0;
对于 tbody 不需要设置 height = 100%
table 中的边框也是一个问题,最好移动到 div(如果需要边框)
<style>
html, body {padding: 0; margin:0; width: 100%; height: 100%;}
</style>
<div style="width: 100%; height: 100%; display:block;">
<table style="position: absolute; width: 100%; height: 100%; ">
<tbody >
<tr>
<td id="sidebar" style="width: 200px; height: 100%; vertical-align: top;" rowspan="2">
<div style="width: 200px;height: 100%;margin: 0;padding: 0;overflow-y: scroll;overflow-x:auto;">
Side
</div>
</td>
<td id="stepeditor" style="vertical-align: top; position: relative; display: block; width: 100%; height: 100%;">
<div style="position: relative; width: 100%; height: 100%; margin: 0; padding: 0; overflow: scroll;">
main
</div>
</td>
</tr>
<tr>
<td style="vertical-align: top; height: 200px; border-top: 1px solid;">
<div style="width: 100%; height: 200px; margin: 0; padding: 0; overflow: scroll;">
bottom
</div>
</td>
</tr>
</tbody>
</table>
</div>
我想要一个占据整个屏幕的 table,它有侧边栏、底部栏和主面板。每个都应该能够独立滚动,并且在任何情况下整个页面都不应有滚动条。
这是我的:
<div style="width: 100%; height: 100%; display:block;">
<table style="position: absolute; width: 100%; height: 100%; border-collapse: separate; border-spacing: 1px;">
<tbody style="height:100%">
<tr>
<td id="sidebar" style="width: 200px; height: 100%; vertical-align: top;" rowspan="2">
<div style="width: 200px;height: 100%;margin: 0;padding: 0;overflow-y: scroll;overflow-x:auto;">
Side
</div>
</td>
<td id="stepeditor" style="vertical-align: top; position: relative; display: block; width: 100%; height: 100%;">
<div style="position: relative; width: 100%; height: 100%; margin: 0; padding: 0; overflow: scroll;">
main
</div>
</td>
</tr>
<tr>
<td style="vertical-align: top; height: 200px; border-top: 1px solid;">
<div style="width: 100%; height: 200px; margin: 0; padding: 0; overflow: scroll;">
bottom
</div>
</td>
</tr>
</tbody>
</table>
</div>
我一直在摆弄很多选项,目前只有侧边栏能按我的意愿工作,但完整的上仍然有滚动条window,我不知道它们为什么在那里.
如何让它正常工作?
解决方案:https://jsfiddle.net/mj0baug5/
每个面板使用 overflow-x:hidden; overflow-y:scroll;
而不是 overflow:auto
。这将启用垂直滚动但不启用水平滚动。
要限制页面滚动,请使用:
body {
overflow: hidden;
}
你的风格问题。
正文需要设置margin:0;
对于 tbody 不需要设置 height = 100%
table 中的边框也是一个问题,最好移动到 div(如果需要边框)
<style>
html, body {padding: 0; margin:0; width: 100%; height: 100%;}
</style>
<div style="width: 100%; height: 100%; display:block;">
<table style="position: absolute; width: 100%; height: 100%; ">
<tbody >
<tr>
<td id="sidebar" style="width: 200px; height: 100%; vertical-align: top;" rowspan="2">
<div style="width: 200px;height: 100%;margin: 0;padding: 0;overflow-y: scroll;overflow-x:auto;">
Side
</div>
</td>
<td id="stepeditor" style="vertical-align: top; position: relative; display: block; width: 100%; height: 100%;">
<div style="position: relative; width: 100%; height: 100%; margin: 0; padding: 0; overflow: scroll;">
main
</div>
</td>
</tr>
<tr>
<td style="vertical-align: top; height: 200px; border-top: 1px solid;">
<div style="width: 100%; height: 200px; margin: 0; padding: 0; overflow: scroll;">
bottom
</div>
</td>
</tr>
</tbody>
</table>
</div>