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>

Если содержимое станет выше требуемой высоты, начнется прокрутка. Тем не менее, заголовки останутся фиксированными в верхней части независимо от положения прокрутки.

Не совсем идеально, но это приблизило меня к некоторым из лучших ответов здесь.

Две разные таблицы, одна с заголовком, а другая завернутая в 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 DataTable

Я не знаю, есть ли у YUI DT эта функция, но я не удивлюсь, если она есть.

Вот хороший плагин jQuery, работающий во всех браузерах!

У вас есть фиксированная таблица заголовков без фиксации ее ширины.

Проверьте это: https://github.com/benjaminleouzon/tablefixedheader

Отказ от ответственности: я автор плагина.

Другие вопросы по тегам