HTML表,水平滚动跟踪标题和垂直滚动问题与文本宽度

时间:2011-02-23 16:28:15

标签: html css scroll column-width text-width

首先,如果您今天发现我之前的一些帖子,请先道歉。我有一段我写的HTML,这似乎是唯一的方法。

  • 随后移动tbody时,水平滚动会使thead与tbody对齐。
  • 垂直滚动仍然保持thead在视野中。

我能做到这一点的唯一方法就是使用两张桌子。这可以尝试并随意尝试。但是,我有一个问题,列的宽度由它们内部的文本的大小确定,而不是我设置的宽度属性。有人可以帮忙吗?

我只想让列的宽度表示列的宽度

编辑: 1200宽度的原因是因为在溢出div内部实际尺寸为8x 150px

    <script type='text/javascript'>
        function MatchScroll(SourceID, TargetID, DoIfMoz) {
                if (DoIfMoz || navigator.userAgent.indexOf("Firefox") == -1) document.getElementById(TargetID).scrollLeft = document.getElementById(SourceID).scrollLeft;
        }
    </script>

    <div id='HeaderTable'  style='width:883px;overflow:auto;overflow-y:hidden;overflow-x:hidden;'>
        <table border='1'   id='HeaderTable' style='width:1200px;float:left;table-layout:fixed;'>
            <thead style='text-align:left;'>
                <tr style='display:block;margin-left:1px;'>
                    <th width='150' style='width:150px;'>t</th>
                    <th width='150' style='width:150px;'>t</th>
                    <th width='150' style='width:150px;'>tt</th>
                    <th width='150' style='width:150px;'>t</th>
                    <th width='150' style='width:150px;'>t</th>
                    <th width='150' style='width:150px;'>ttttt</th>
                    <th width='150' style='width:150px;'>ttttt</th>
                    <th width='150' style='width:150px;'>tt</th>
                </tr>
            </thead>
        </table>
    </div>
    <div id='DataTable' style='height:300px;float:left;overflow:auto;overflow-x:auto;overflow-y:scroll;width:900px;'  onmouseup="MatchScroll('DataTable','HeaderTable', true);" onmousemove="MatchScroll('DataTable','HeaderTable', false);"     >
        <table border='1' style='width:1200px;float:left;table-layout:fixed;'>
            <tbody id='ClearDetails'>
                <tr id='Row0' style='color:black;height:auto;display:block;'>
                    <td style='width:150px;'>1</td>
                    <td style='width:150px;'>1</td>
                    <td style='width:150px;'>1</td>
                    <td style='width:150px;'>1</td>
                    <td style='width:150px;'>1111111111</td>
                    <td style='width:150px;'>1</td>
                    <td style='width:150px;'>1</td>
                    <td style='width:150px;'>1</td>
                </tr>
            </tbody>
        </table>
    </div>

2 个答案:

答案 0 :(得分:0)

我不知道你的整个项目有多大,但有一个jquery dataTable插件可以解决这个问题。

它有很多用于处理表的选项。如果你只想实现一些选项,我建议你使用“jquery.min”文件。

答案 1 :(得分:-1)

在CSS width: x中指定最小宽度,因此浏览器可能会扩展列以使表格中超出它的文本适合。