Здесь уже есть много действительно хороших решений.Но одно из самых простых CSS-решений, которые я использую в этих ситуациях, заключается в следующем:
table {
/* Not required only for visualizing */
border-collapse: collapse;
width: 100%;
}
table thead tr th {
/* Important */
background-color: red;
position: sticky;
z-index: 100;
top: 0;
}
td {
/* Not required only for visualizing */
padding: 1em;
}
<table>
<thead>
<tr>
<th>Col1</th>
<th>Col2</th>
<th>Col3</th>
</tr>
</thead>
<tbody>
<tr>
<td>info</td>
<td>info</td>
<td>info</td>
</tr>
<tr>
<td>info</td>
<td>info</td>
<td>info</td>
</tr>
<tr>
<td>info</td>
<td>info</td>
<td>info</td>
</tr>
<tr>
<td>info</td>
<td>info</td>
<td>info</td>
</tr>
<tr>
<td>info</td>
<td>info</td>
<td>info</td>
</tr>
<tr>
<td>info</td>
<td>info</td>
<td>info</td>
</tr>
<tr>
<td>info</td>
<td>info</td>
<td>info</td>
</tr>
<tr>
<td>info</td>
<td>info</td>
<td>info</td>
</tr>
<tr>
<td>info</td>
<td>info</td>
<td>info</td>
</tr>
<tr>
<td>info</td>
<td>info</td>
<td>info</td>
</tr>
<tr>
<td>info</td>
<td>info</td>
<td>info</td>
</tr>
<tr>
<td>info</td>
<td>info</td>
<td>info</td>
</tr>
</tbody>
</table>
Поскольку не требуется JavaScript, это значительно упрощает ситуацию.По сути, вам нужно сосредоточиться на втором CSS-правиле, которое содержит условия для обеспечения того, чтобы заголовок таблицы оставался верхним независимо от места прокрутки.правила в деталях.position
предназначено для указания браузеру, что объект head, его строка и его ячейки должны придерживаться вершины.Это обязательно должно сопровождаться top
, которое указывает браузеру, что голова будет придерживаться верхней части страницы или области просмотра.Кроме того, вы можете добавить z-index
, чтобы содержимое заголовка всегда оставалось сверху.
Цвет фона служит просто для иллюстрации сути.Вам не нужно использовать какой-либо дополнительный JavaScript, чтобы получить этот эффект.Это поддерживается в большинстве основных браузеров после 2016 года.