Я работаю над макетом с использованием Tailwind CSS, который включает в себя сеточную структуру с фиксированным заголовком и основной областью контента. Основная область содержимого разделена на три части: левую, центральную и правую.
<div class = "grid min-h-screen grid-cols-[0_1fr] grid-rows-[98px_1fr] xl:grid-cols-[auto_1fr]">
<!-- Fixed Header -->
<div class = "sticky top-0 col-span-full row-start-1 grid grid-cols-2 grid-rows-2 items-center bg-red-500">Header</div>
<!-- Main Content Area -->
<main class = "col-start-2 col-end-3 row-start-2 grid grid-cols-4 sm:grid-cols-8 xl:grid-cols-12">
<div class = "col-span-full grid grid-cols-[repeat(11,1fr)] grid-rows-[1fr]">
<!-- Left Section -->
<div class = "col-start-3 col-end-5 flex justify-center bg-green-500">Left</div>
<!-- Center Section (scrollable) -->
<div id = "overflowThisDiv" class = "col-start-5 col-end-10 overflow-y-scroll bg-white">
<div class = "flex h-[500px] items-center justify-center bg-orange-400">Test</div>
<div class = "flex h-[500px] items-center justify-center bg-orange-400">Test</div>
<div class = "flex h-[500px] items-center justify-center bg-orange-400">Test</div>
</div>
<!-- Right Section -->
<div class = "col-start-10 col-end-12 flex justify-center bg-black text-white">Right</div>
</div>
</main>
</div>
Я хочу получить прокручиваемую центральную часть (тестовые элементы), сохраняя при этом левую и правую части фиксированными. В настоящее время, когда я прокручиваю, прокручивается вся сетка, включая левую и правую части.
Как я могу изменить CSS или структуру HTML Tailwind, чтобы обеспечить вертикальную прокрутку только центральной части (тестовые элементы div), сохраняя фиксированное расположение левой и правой частей?
Все три элемента div должны иметь максимальный размер экрана по вертикали, а центральный элемент div должен быть прокручиваемым, если его содержимое превышает высоту указанного элемента div.
Можно ли также прокрутить страницу в любом месте, чтобы начать прокрутку только центрального элемента div?
Будем очень признательны за любые идеи или примеры кода.
Пример игровой площадки попутного ветра:






Вы можете добавить фиксированный элемент div внутри двух внешних столбцов. Это позволяет вам прокручивать всю страницу, перемещая только центральный столбец.
Надеюсь, мое решение — это то, что вы искали.
<div class = "grid min-h-screen grid-cols-[0_1fr] grid-rows-[98px_1fr] xl:grid-cols-[auto_1fr]">
<div class = "sticky top-0 col-span-full row-start-1 grid grid-cols-2 grid-rows-2 items-center bg-red-500">Header</div>
<main class = "col-start-2 col-end-3 row-start-2 grid w-full grid-cols-4 sm:grid-cols-8 xl:grid-cols-12">
<div class = "col-span-full grid w-full grid-cols-[repeat(11,1fr)] grid-rows-[1fr]">
<div class = "col-start-1 col-end-3 flex justify-center bg-green-500">
<div class = "fixed">Left</div>
</div>
<div class = "col-start-3 col-end-10 bg-white">
<div class = "flex h-[500px] items-center justify-center bg-orange-400">Test</div>
<div class = "flex h-[500px] items-center justify-center bg-orange-400">Test</div>
<div class = "flex h-[500px] items-center justify-center bg-orange-400">Test</div>
</div>
<div class = "col-start-10 col-end-12 flex justify-center bg-black text-white">
<div class = "fixed">Right</div>
</div>
</div>
</main>
</div>
Вот демо: https://play.tailwindcss.com/wAPoI8AruW
@BitByte Вы можете попробовать удалить «justify-center» из родительского div и добавить «w-full» к фиксированному дочернему div. Я думаю, что все будет работать так, как вы ожидаете. Дайте мне знать, если это хорошо.
Добавление w-full к фиксированному дочернему div приводит к тому, что его ширина превышает область просмотра экрана, поскольку он находится на фиксированном div. Я провел тест, добавив границу-2, и я могу видеть границу сверху слева внизу, но не справа, и при проверке элемента i вижу, что ширина находится за пределами экрана
Хотя у меня есть еще один вопрос: при установке правого фиксированного div на w-full он распространяется по всей странице. Как возможно, что правая фиксированная ширина соответствует родительской ширине col-start-10 col-end-12, поэтому ее минимальная ширина равна ширине родительских столбцов