Прокручивайте только одну часть сетки в Tailwind CSS

Я работаю над макетом с использованием 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?

Будем очень признательны за любые идеи или примеры кода.

Пример игровой площадки попутного ветра:

https://play.tailwindcss.com/WNBtszn3Ek

Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут...
0
0
376
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете добавить фиксированный элемент 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

Хотя у меня есть еще один вопрос: при установке правого фиксированного div на w-full он распространяется по всей странице. Как возможно, что правая фиксированная ширина соответствует родительской ширине col-start-10 col-end-12, поэтому ее минимальная ширина равна ширине родительских столбцов

BitByte 04.03.2024 12:24

@BitByte Вы можете попробовать удалить «justify-center» из родительского div и добавить «w-full» к фиксированному дочернему div. Я думаю, что все будет работать так, как вы ожидаете. Дайте мне знать, если это хорошо.

Oscar 05.03.2024 19:22

Добавление w-full к фиксированному дочернему div приводит к тому, что его ширина превышает область просмотра экрана, поскольку он находится на фиксированном div. Я провел тест, добавив границу-2, и я могу видеть границу сверху слева внизу, но не справа, и при проверке элемента i вижу, что ширина находится за пределами экрана

BitByte 06.03.2024 16:06

Другие вопросы по теме