Я пытаюсь придумать способ сделать таблицу с фиксированным первым столбцом (и остальной частью таблицы с горизонтальным переполнением). Я видел сообщение, которое подобный вопрос. но бит фиксированного столбца, похоже, не был разрешен. Помогите?HTML-таблица с горизонтальной прокруткой (исправлена первая колонка)
ответ
Я подобный стол в стиле так:
<table style="width:100%; table-layout:fixed">
<tr>
<td style="width: 150px">Hello, World!</td>
<td>
<div>
<pre style="margin:0; overflow:scroll">My preformatted content</pre>
</div>
</td>
</tr>
</table>
Этот ответ действительно выиграет от демонстрации здесь. –
[JSFIDDLE demo] (https://jsfiddle.net/dx65qwa3/), чтобы было более ясно, что здесь происходит –
Это только прокручивает одну ячейку ... – w00t
Посмотрите на это JQuery плагин:
Он добавляет вертикальный (фиксированная строка заголовка) или горизонтальный (фиксированный первый столбец), прокручивающийся до существующей таблицы HTML. Существует демо-версия, которую вы можете проверить для обоих случаев прокрутки.
note: это зависит от устаревших функций в jquery и не обновляется с тех пор 1 год –
@HaykSaakian Похоже, что проект сейчас обновляется? Говорит в этом году, и требуется версия jQuery версии 1.7. – Metropolis
Используйте плагин jQuery DataTables, он поддерживает фиксированный заголовок и столбцы. Этот пример добавляет поддержку фиксированного столбца в HTML таблице "пример":
http://datatables.net/extensions/fixedcolumns/
Для двух фиксированных столбцов:
http://www.datatables.net/release-datatables/extensions/FixedColumns/examples/two_columns.html
Как насчет:
table {
table-layout: fixed;
width: 100%;
*margin-left: -100px; /*ie7*/
}
td, th {
vertical-align: top;
border-top: 1px solid #ccc;
padding: 10px;
width: 100px;
}
.fix {
position: absolute;
*position: relative; /*ie7*/
margin-left: -100px;
width: 100px;
}
.outer {
position: relative;
}
.inner {
overflow-x: scroll;
overflow-y: visible;
width: 400px;
margin-left: 100px;
}
<div class="outer">
<div class="inner">
<table>
<tr>
<th class=fix></th>
<th>Col 1</th>
<th>Col 2</th>
<th>Col 3</th>
<th>Col 4</th>
<th class="fix">Col 5</th>
</tr>
<tr>
<th class=fix>Header A</th>
<td>col 1 - A</td>
<td>col 2 - A (WITH LONGER CONTENT)</td>
<td>col 3 - A</td>
<td>col 4 - A</td>
<td class=fix>col 5 - A</td>
</tr>
<tr>
<th class=fix>Header B</th>
<td>col 1 - B</td>
<td>col 2 - B</td>
<td>col 3 - B</td>
<td>col 4 - B</td>
<td class=fix>col 5 - B</td>
</tr>
<tr>
<th class=fix>Header C</th>
<td>col 1 - C</td>
<td>col 2 - C</td>
<td>col 3 - C</td>
<td>col 4 - C</td>
<td class=fix>col 5 - C</td>
</tr>
</table>
</div>
</div>
Вы можете проверить его в этом jsbin: http://jsbin.com/uxecel/4/edit
Простое, но эффективное решение по моему запросу! –
Это в основном работает для меня, но я хотел бы начать с самых правых столбцов прокручиваемого div. Мои заголовки столбцов - это даты с самой последней датой справа, и я хотел бы, чтобы это было видно, когда сначала отображается
I Я хотел бы немного расширить этот вопрос: мой друг хочет создать таблицу, которая не будет масштабироваться до более чем 100% страницы, но будет иметь более двух столбцов, которые вместе должны прокручиваться, если им нужно больше горизонтальное пространство, чем там является. По сути, это должно быть похоже на Frozen columns в MS Excel. Это возможно? –
См. Мой ответ на аналогичный вопрос: http://stackoverflow.com/a/17557830/1763149 –