我最近遇到了类似的问题,最终使用多种不同的解决方案对其进行了修复。
第一个也是最简单的一个方法是使用两个表,一个用于标题,一个用于主体。此方法有效,但标题和正文列未对齐。而且,由于我想使用Twitter引导程序表随附的自动调整大小,因此我最终创建了一个Javascript函数,该函数可以在以下情况下更改标题:窗户被调整大小;列中的数据更改,依此类推。
这是我使用的一些代码:
<table class="table table-striped table-hover" style="margin-bottom: 0px;">
<thead>
<tr>
<th data-sort="id">Header 1</i></th>
<th data-sort="guide">Header 2</th>
<th data-sort="origin">Header 3</th>
<th data-sort="supplier">Header 4</th>
</tr>
</thead>
</table>
<div class="bodycontainer scrollable">
<table class="table table-hover table-striped table-scrollable">
<tbody id="rows"></tbody>
</table>
</div>
标头和正文分为两个单独的表。其中之一是在具有必要样式的DIV内以生成垂直滚动条。这是我使用的CSS:
.bodycontainer {
//height: 200px
width: 100%;
margin: 0;
}
.table-scrollable {
margin: 0px;
padding: 0px;
}
我在这里评论了高度,因为无论页面高度如何,我都希望表格能到达页面底部。
我在标头中使用的数据排序属性也在每个td中使用。这样,我可以获得每个td的宽度和填充以及行的宽度。通过使用CSS设置的数据排序属性,相应地设置了每个标题的标题和宽度,以及标题行的填充和宽度,标题行始终较大,因为它没有滚动条。这是使用coffeescript的函数:
fixHeaders: =>
for header, i in @headers
tdpadding = parseInt(@$("td[data-sort=#{header}]").css('padding'))
tdwidth = parseInt(@$("td[data-sort=#{header}]").css('width'))
@$("th[data-sort=#{header}]").css('padding', tdpadding)
@$("th[data-sort=#{header}]").css('width', tdwidth)
if (i+1) == @headers.length
trwidth = @$("td[data-sort=#{header}]").parent().css('width')
@$("th[data-sort=#{header}]").parent().parent().parent().css('width', trwidth)
@$('.bodycontainer').css('height', window.innerHeight - ($('html').outerHeight() -@$('.bodycontainer').outerHeight() ) ) unless @collection.length == 0
在这里,我假设您有一个名为@headers的标头数组。
它不是很漂亮,但是可以工作。希望它能帮助某人。