Задать вопрос
  • Как зафиксировать шапку у таблицы?

    @ulugbekovv
    Для решения вашей задачи с фиксированием шапки таблицы при вертикальном скролле, не меняя структуру HTML и сохраняя горизонтальный скролл, можно использовать комбинацию CSS и JavaScript. Вот подход, который может помочь:

    1. CSS: Сначала установите необходимые стили для шапки таблицы, чтобы она была “липкой” (sticky):

    .table-container {
        position: relative; /* Создаем контекст для абсолютного позиционирования шапки */
    }
    
    .table-header {
        position: sticky;
        top: 0; /* Фиксируем шапку к верху контейнера */
        background-color: white; /* Цвет фона для видимости */
        z-index: 10; /* Чтобы шапка была выше других элементов */
    }


    2. JavaScript: Затем, используйте JavaScript, чтобы добавить функциональность для синхронизации скролла шапки и самой таблицы. Можно использовать scroll событие для отслеживания вертикального скролла страницы и управления свойством transform шапки:

    const tableContainer = document.querySelector('.table-container');
    const tableHeader = document.querySelector('.table-header');
    
    tableContainer.addEventListener('scroll', () => {
        // Прокручиваем шапку таблицы, чтобы она оставалась на уровне видимости
        const scrollTop = tableContainer.scrollTop;
        tableHeader.style.transform = `translateY(${scrollTop}px)`;
    });


    3. HTML: Оберните вашу таблицу в контейнер с классом .table-container, если этого еще не сделано:

    <div class="table-container" style="overflow-x: auto; overflow-y: auto; max-height: 500px;">
        <table>
            <thead class="table-header">
                <tr>
                    <th>Column 1</th>
                    <th>Column 2</th>
                    <th>Column 3</th>
                    <!-- другие колонки -->
                </tr>
            </thead>
            <tbody>
                <!-- данные таблицы -->
            </tbody>
        </table>
    </div>
    Ответ написан
    Комментировать