Это называется прокруткой фиксированного заголовка.Существует несколько документированных подходов:
http://www.imaputz.com/cssStuff/bigFourVersion.html
Вы не сможете эффективно справиться с этим без JavaScript ... особенно если вам нужна кросс-браузерная поддержка.
Существует целый ряд проблем с любым подходом, который вы используете, особенно в отношении кросс-браузерной / версии поддержки.
Редактировать:
Даже если вы хотите исправить не заголовок, а первую строкуданные, концепция все та же.Я не был на 100% тем, на что вы ссылались.
Дополнительные мысли Моя компания поручила мне найти решение для этого, которое могло бы работать в IE7 +, Firefox и Chrome.
После многих лун поиска, попыток и разочарования это действительно сводилось к фундаментальной проблеме.По большей части, чтобы получить фиксированный заголовок, вам нужно реализовать фиксированные столбцы высоты / ширины, потому что большинство решений предполагают использование двух отдельных таблиц, одна для заголовка, который будет плавать и оставаться на месте над второй таблицей, которая содержит данные..
//float this one right over second table
<table>
<tr>
<th>Header 1</th>
<th>Header 2</th>
</tr>
</table>
<table>
//Data
</table>
Альтернативный подход, который некоторые пытаются использовать, заключается в использовании тегов tbody и thead, но это также является недостатком, поскольку IE не позволяет размещать полосу прокрутки на теле, что означает, что вы не можете ограничить его высоту (поэтомуглупо IMO).
<table>
<thead style="do some stuff to fix its position">
<tr>
<th>Header 1</th>
<th>Header 2</th>
</tr>
</thead>
<tbody style="No scrolling allowed here!">
Data here
</tbody>
</table>
Этот подход имеет много проблем, таких как обеспечение ТОЧНОЙ ширины пикселя, потому что таблицы настолько милы, что разные браузеры будут распределять пиксели по-разному на основе вычислений, и вы просто НЕ МОЖЕТЕ (AFAIK) гарантировать, чтоРаспределение будет идеальным во всех случаях.Это становится очевидно очевидным, если у вас есть границы внутри таблицы.
Я выбрал другой подход и сказал, что это винтовые столы, поскольку вы не можете дать эту гарантию.Я использовал div для имитации таблиц.Это также имеет проблемы с позиционированием строк и столбцов (в основном из-за проблем с плавающей точкой, использование встроенного блока не будет работать в IE7, поэтому я действительно оставил использование абсолютного позиционирования, чтобы поместить их на свои места).
Есть кто-то, кто создал Slick Grid, у которого очень похожий подход к моему, и вы можете использовать и хороший (хотя и сложный) пример для достижения этого.
https://github.com/6pac/SlickGrid/wiki