好,我知道了:
您需要将表格包装在两个 DIV 中:
<div class="outerDIV">
<div class="innerDIV">
<table></table>
</div>
</div>
DIV 的 CSS 是这样的:
.outerDIV {
position: relative;
padding-top: 20px; //height of your thead
}
.innerDIV {
overflow-y: auto;
height: 200px; //the actual scrolling container
}
原因是,您基本上使内部 DIV 可滚动,并通过将 THEAD 粘贴到外部 DIV 上将其拉出。
现在thead
通过给它坚持到outerDIV
table thead {
display: block;
position: absolute;
top: 0;
left: 0;
}
tbody
需要也display: block
有。
现在您会注意到滚动有效,但宽度完全混乱。那是 Javascript 进来的。你可以自己选择你想如何分配它。我自己给表格中的 TH 提供了固定宽度,并构建了一个简单的脚本,该脚本采用宽度并将它们分配给tbody
.
像这样的东西应该工作:
function scrollingTableSetThWidth(tableId)
{
var table = document.getElementById(tableId);
ths = table.getElementsByTagName('th');
tds = table.getElementsByTagName('td');
if(ths.length > 0) {
for(i=0; i < ths.length; i++) {
tds[i].style.width = getCurrentComputedStyle(ths[i], 'width');
}
}
}
function getCurrentComputedStyle(element, attribute)
{
var attributeValue;
if (window.getComputedStyle)
{ // class A browsers
var styledeclaration = document.defaultView.getComputedStyle(element, null);
attributeValue = styledeclaration.getPropertyValue(attribute);
} else if (element.currentStyle) { // IE
attributeValue = element.currentStyle[vclToCamelCases(attribute)];
}
return attributeValue;
}
使用 jQuery 当然这会容易得多,但现在我不允许为这个项目使用第三方库。