Установка высоты и прокрутки tbody в HTML и CSS
Быстрый ответ
Чтобы задать максимальную высоту tbody вместе с вертикальной прокруткой, используйте следующие стили:
tbody {
  display: block; 
  max-height: 400px; 
  overflow-y: scroll; 
}
Для того чтобы thead оставался видимым на верху страницы, надо его фиксировать:
thead {
  display: table;
  width: 100%;
  position: sticky; 
  top: 0;
}
Это общие рекомендации, детальнее про настройку можно узнать ниже.

Создание tbody с прокручиваемым overflow: пошаговое руководство
Рассмотрим более подробно настройку и функционирование данных свойств.
Равномерное распределение ширины ячеек
Установите table-layout: fixed для равномерного распределения ширины ячеек:
table {
  width: 100%;
  table-layout: fixed;
}
Задайте также ширину столбцов:
th, td {
  width: 200px;
}
Фиксирование шапки таблицы: каким образом
Чтобы шапка таблицы не перемещалась с места, воспользуйтесь свойством position: sticky:
thead {
  position: sticky;
  top: 0;
}
Советуем согласовать фоновые цвета для thead и tbody, чтобы исключить визуальный дискомфорт при прокрутке.
Учет ширины полосы прокрутки
Настройте ширину столбцов thead с учетом ширины полосы прокрутки:
thead {
  display: table;
  width: calc(100% – 17px);
}
(17px – это приблизительная ширина полосы прокрутки, но значение может требовать корректировки.)
Использование CSS Grid, JavaScript и возможные перемены в CSS
Использование display: block для tbody может вызвать нарушение выравнивания, поэтому стоит рассмотреть альтернативы в виде CSS Grid или JavaScript. Также учитывайте overflow: overlay, что в будущем может стать основным механизмом прокрутки содержимого.
Визуализация
Работа с таблицами схожа с игрой в Тетрис: важно, чтобы каждая ячейка аккуратно заняла свое место в предназначенном для нее пространстве (для этого настраивайте display: block и height / max-height). Также необходимо следить за тем, чтобы строки не выходили за пределы таблицы, но при этом можно было их прокручивать (overflow-y: scroll).
Полезные материалы
- CSS Overflow. Учебный материал от W3Schools о свойстве CSS overflow.
 - Свойство CSS Overflow | CSS-Tricks. Руководство от CSS-Tricks о практическом использовании CSS overflow.
 - max-height – CSS: Cascading Style Sheets | MDN. Справочник на MDN Web Docs о настройке max-height с overflow.
 - box-sizing – CSS: Cascading Style Sheets | MDN. Детальное описание свойства box-sizing.
 - HTML-таблица на всю ширину экрана с вертикальной прокруткой внутри tbody. Дискуссия на Stack Overflow о создании прокручиваемых таблиц с фиксированными заголовками.
 - Заголовок таблицы с прокручиваемым содержимым – пример с CodePen. Живой пример таблицы с фиксированным заголовком и прокручиваемым содержимым.
 


