Я думаю, что следующий код на основе jQuery должен работать в большинстве браузеров. Вот принцип работы этого метода:
Вот код:
function scrolify(tblAsJQueryObject, height){
var oTbl = tblAsJQueryObject;
// для очень длинных таблиц вы можете удалить 4 следующие линии
// и поместить таблицу в ДИВ и назначить ему высоту и свойство overflow
var oTblDiv = $("<div/>");
oTblDiv.css(''height'', height);
oTblDiv.css(''overflow'',''scroll'');
oTbl.wrap(oTblDiv);
// сохраняем оригинальную ришину
oTbl.attr("data-item-original-width", oTbl.width());
oTbl.find(''thead tr td'').each(function(){
$(this).attr("data-item-original-width",$(this).width());
});
oTbl.find(''tbody tr:eq(0) td'').each(function(){
$(this).attr("data-item-original-width",$(this).width());
});
// клонируем оригинальную таблицу
var newTbl = oTbl.clone();
// удаляем заголовки из оригинальной таблицы
oTbl.find(''thead tr'').remove();
// удаляем тело таблицы из новой таблицы
newTbl.find(''tbody tr'').remove();
oTbl.parent().parent().prepend(newTbl);
newTbl.wrap("<div/>");
// заменяем исходную ширину столбца
newTbl.width(newTbl.attr(''data-item-original-width''));
newTbl.find(''thead tr td'').each(function(){
$(this).width($(this).attr("data-item-original-width"));
});
oTbl.width(oTbl.attr(''data-item-original-width''));
oTbl.find(''tbody tr:eq(0) td'').each(function(){
$(this).width($(this).attr("data-item-original-width"));
});
}
$(document).ready(function(){
scrolify($(''#tblNeedsScrolling''), 160); // 160 is height
});
<div style="width:300px;border:2px solid black;"> <table border="1" width="100%" id="tblNeedsScrolling"> <thead> <tr><th>Заголовок 1</th><th>Заголовок 2</th></tr> </thead> <tbody> <tr><td>Ряд 1, столбец 1</td><td>Ряд 1, столбец 2</td></tr> <tr><td>Ряд 2, столбец 1</td><td>Ряд 2, столбец 2</td></tr> <tr><td>Ряд 3, столбец 1</td><td>Ряд 3, столбец 2</td></tr> <tr><td>Ряд 4, столбец 1</td><td>Ряд 4, столбец 2</td></tr> <tr><td>Ряд 5, столбец 1</td><td>Ряд 5, столбец 2</td></tr> <tr><td>Ряд 6, столбец 1</td><td>Ряд 6, столбец 2</td></tr> <tr><td>Ряд 7, столбец 1</td><td>Ряд 7, столбец 2</td></tr> <tr><td>Ряд 8, столбец 1</td><td>Ряд 8, столбец 2</td></tr> </tbody> </table> </div>
| Заголовок 1 | Заголовок 2 |
|---|---|
| Ряд 1, столбец 1 | Ряд 1, столбец 2 |
| Ряд 2, столбец 1 | Ряд 2, столбец 2 |
| Ряд 3, столбец 1 | Ряд 3, столбец 2 |
| Ряд 4, столбец 1 | Ряд 4, столбец 2 |
| Ряд 5, столбец 1 | Ряд 5, столбец 2 |
| Ряд 6, столбец 1 | Ряд 6, столбец 2 |
| Ряд 7, столбец 1 | Ряд 7, столбец 2 |
| Ряд 8, столбец 1 | Ряд 8, столбец 2 |