HTML-таблица с фиксированными заголовками и фиксированным столбцом?
Существует ли метод CSS/JavaScript для отображения длинной таблицы HTML, такой, чтобы заголовки столбцов оставались фиксированными на экране, а первый столбец оставался фиксированным и прокручивал данные.
Я хочу иметь возможность прокручивать содержимое таблицы, но всегда иметь возможность видеть заголовки столбцов вверху и первый столбец слева.
Если бы был плагин jQuery, это было бы здорово! Если это помогает, единственный браузер, который меня волнует - это Firefox.
13 ответов
Рабочий пример ссылки, размещенной pranav:
http://jsbin.com/nolanole/1/edit?html,js,output
К сведению: протестировано в IE 6, 7 и 8 (режим совместимости включен или выключен), FF 3 и 3.5, Chrome 2. Не удобен для чтения с экрана (заголовки не являются частью таблицы содержимого).
РЕДАКТИРОВАТЬ 5/5/14: перенес пример в jsBin. Это старый, но удивительно все еще работает в современных Chrome, IE и Firefox (хотя IE и Firefox могут потребовать некоторые корректировки высоты строк).
Плагин jQuery DataTables - один из отличных способов добиться превосходных фиксированных столбцов и заголовков.
Обратите внимание на раздел примеров сайта и "дополнения".
http://datatables.net/examples/
http://datatables.net/extras/
В разделе "Дополнительно" есть инструменты для фиксированных столбцов и фиксированных заголовков.
Фиксированные столбцы
http://datatables.net/extras/fixedcolumns/
(Я считаю, что пример на этой странице является наиболее подходящим для вашего вопроса.)
Фиксированный заголовок
http://datatables.net/extras/fixedheader/
(Включает пример с макетом стиля электронной таблицы полной страницы: http://datatables.net/release-datatables/extras/FixedHeader/top_bottom_left_right.html)
Я вижу это, хотя старый вопрос, довольно хорошее место для подключения моего собственного сценария:
http://code.google.com/p/js-scroll-table-header/
Он просто работает без конфигурации и действительно прост в настройке.
Возможно, вы ищете это.
У него есть некоторые известные проблемы, хотя.
В этом ответе также есть лучший ответ, который я нашел на ваш вопрос:
HTML-таблица с фиксированными заголовками?
и на основе чистого CSS.
Если вы хотите, чтобы заголовки оставались на месте, пока данные в таблице прокручиваются по вертикали, вы должны реализовать
в стиле "overflow-y: auto", например так:<table>
<thead>
<tr>
<th>Header1</th>
. . .
</tr>
</thead>
<tbody style="height: 300px; overflow-y: auto">
<tr>
. . .
</tr>
. . .
</tbody>
</table>
Если содержимое
станет выше требуемой высоты, начнется прокрутка. Тем не менее, заголовки останутся фиксированными в верхней части независимо от положения прокрутки. 2009-03-26 05:40Не совсем идеально, но это приблизило меня к некоторым из лучших ответов здесь.
Две разные таблицы, одна с заголовком, а другая завернутая в div с содержимым
<table>
<thead>
<tr><th>Stuff</th><th>Second Stuff</th></tr>
</thead>
</table>
<div style="height: 600px; overflow: auto;">
<table>
<tbody>
//Table
</tbody>
</table>
</div>
<script>
$(document).ready(function () {
$("#GridHeader table").html($('#<%= GridView1.ClientID %>').html());
$("#GridHeader table tbody .rows").remove();
$('#<%= GridView1.ClientID %> tr:first th').hide();
});
</script>
<div id="GridHeader">
<table></table>
</div>
<div style="overflow: auto; height:400px;">
<asp:GridView ID="GridView1" runat="server" />
</div>
Я создал что-то, что имеет фиксированный заголовок, фиксированный нижний колонтитул, фиксированный левый столбец, а также фиксированный правый столбец. Это хорошо работает только в IE. Поскольку большинство пользователей все еще используют IE, это может быть полезно. Пожалуйста, найдите код здесь в прокручиваемой таблице. Пожалуйста, дайте мне ваши предложения.
Тем временем я работаю над исправлением столбцов в другом браузере. Я буду держать вас в курсе.:-)
Я знаю, что вы можете сделать это для MSIE, и этот ограниченный пример, кажется, работает для Firefox (не уверен, насколько расширяема эта техника).
Первый столбец имеет полосу прокрутки в ячейке прямо под заголовками
<table>
<thead>
<th> Header 1</th>
<th> Header 2</th>
<th> Header 3</th>
</thead>
<tbody>
<tr>
<td>
<div style="width: 50; height:30; overflow-y: scroll">
Tklasdjf alksjf asjdfk jsadfl kajsdl fjasdk fljsaldk
fjlksa djflkasjdflkjsadlkf jsakldjfasdjfklasjdflkjasdlkfjaslkdfjasdf
</div>
</td>
<td>
Hello world
</td>
<td> Hello world2
</tr>
</tbody>
</table>
Я не знаю, есть ли у YUI DT эта функция, но я не удивлюсь, если она есть.
Вот хороший плагин jQuery, работающий во всех браузерах!
У вас есть фиксированная таблица заголовков без фиксации ее ширины.
Проверьте это: https://github.com/benjaminleouzon/tablefixedheader
Отказ от ответственности: я автор плагина.