【问题标题】:Scroll table (but not thead)滚动表(但不是标题)
【发布时间】:2013-02-04 21:58:59
【问题描述】:

我有一个(长)引导表,我想允许使用 overflow: auto; 滚动它。我只希望 tbody 可滚动,而不是 thead 内容。

请参阅this fiddle 我的尝试。我尝试在tbody 上设置高度,但未成功。

【问题讨论】:

  • 这将是一场激烈的战斗,但实际上很难做到,尤其是跨浏览器。无论如何,这里已经讨论过很多次了,比如:stackoverflow.com/questions/1019938/…。在 google 上快速搜索会产生几个 javascript 解决方案以及许多可能在大多数浏览器中工作的纯 CSS 解决方案......所有这些解决方案都不会像预期的那样干净。

标签: javascript twitter-bootstrap


【解决方案1】:

您不能将 tbody 设置为可滚动的。您需要创建两个单独的表——一个用于表头,一个用于正文。将 body 表包裹在一个 div 中,并将overflow-y 属性设置为滚动。

更新 jsfiddle:http://jsfiddle.net/SzGW3/37/

标记:

<div class="scrollable">
    <table class="table table-hover table-striped">
        <thead>
            <tr>
                <th>User</th>
                <th>Rights</th>
                <th></th>
            </tr>
        </thead>
    </table>
</div>
<div class="bodycontainer scrollable">
    <table class="table table-hover table">
        <tbody id="user-rows">
            <tr class="user-row" style="opacity: 1;">
                <td>Justin</td>
                <td>Administrator</td>
                <td><span class="btn btn-mini btn-primary edit pull-right fade">Edit</span>
                </td>
            </tr>
            <tr class="user-row" style="opacity: 1;">
                <td>Sebastien</td>
                <td>Administrator</td>
                <td><span class="btn btn-mini btn-primary edit pull-right fade">Edit</span>
                </td>
            </tr>
            <tr class="user-row" style="opacity: 1;">
                <td>Steve</td>
                <td>Operator</td>
                <td><span class="btn btn-mini btn-primary edit pull-right fade">Edit</span>
                </td>
            </tr>
            <tr class="user-row" style="opacity: 1;">
                <td>Thomas</td>
                <td>Administrator</td>
                <td><span class="btn btn-mini btn-primary edit pull-right fade">Edit</span>
                </td>
            </tr>
            <tr class="user-row" style="opacity: 1;">
                <td>admin</td>
                <td>Administrator</td>
                <td><span class="btn btn-mini btn-primary edit pull-right fade">Edit</span>
                </td>
            </tr>
        </tbody>
    </table>
</div>

风格:

@import url('http://twitter.github.com/bootstrap/assets/css/bootstrap.css');

.scrollable {
    overflow-y: scroll;
}

.bodycontainer {
    height: 100px !important;
    width: 100%;
}

页眉上的滚动条是为了保持宽度不变。你可以用一些 JavaScript 来解决这个问题,但也应该有一些不错的 JS / JQuery 库可以为你处理整个 tbody 滚动问题。

如果你想为 header cols (th) 和 cols (td) 设置相同的宽度:

table thead>tr>th{
    width: 20% !important; /* 20% for 5, 25% for 4, etc */

}

table tbody>tr>td{
    width: 20% !important; /* 20% for 5, 25% for 4, etc */
}

【讨论】:

  • 这个解决方案的问题是宽度。来自 TR 的 TD 与来自 TH 的 TD 的宽度不同。
【解决方案2】:

这可能对您的情况有所帮助:

http://www.novasoftware.com/download/jquery_fixedtable/jquery_fixedtable.aspx

我也试试at fiddle它可以给你一个提示:

一个单行和一个列和一个div,里面有overflow:auto和一个固定的高度和另一个表:

<tbody id="user-rows">
   <tr>
     <td>
        <div style="overflow:auto; height:10em; width:20em;">
          <table >
              <tr>
               .
               .
               . 
              </tr>
          </table>

【讨论】:

    猜你喜欢
    • 2018-04-14
    • 2013-11-30
    • 2017-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-11
    • 2012-01-04
    • 2020-11-12
    相关资源
    最近更新 更多