Я вижу два возможных решения, одно из которых включает JavaScript, а другое нет.
Я бы порекомендовал решение без JavaScript и позже, улучшив его JavaScript.
Первым решением было бы использовать sticky позицию на панели навигации вместо фиксированной.
Я создал кодовое поле здесь , чтобы продемонстрировать его (изменить размер для " мобильный макет ").
Хорошая часть - это то, что работает из коробки, только смена класса (липкий класс):
<div class="bg-gray-500 md:flex md:justify-between md:items-center md:px-4 md:py-3 w-full z-50 top-0 sticky">
<div class="flex items-center justify-between px-4 py-3 md:p-0">
[...]
</div>
</div>
Отрицательным является то, что меню не является фиксированным .
Для этого нам понадобится немного JavaScript (не добавлено в кодовую ручку).
По сути, нам нужно предотвратить переполнение на "теле" (в вашем случае, не фактическое тело, но область, в которой находится содержимое) и добавление свойства bottom для определения высоты панели навигации в дополнение к overflow-y: scroll;
в навигации.
Я создал этот код чтобы проиллюстрировать это. Снова, просмотрите его в «мобильном макете».
Это участвующие классы:
.header-wrapper {
bottom: 0;
overflow-y: scroll;
}
body {
overflow: hidden;
}
Я добавил этот класс к первому дочернему элементу header
элемента:
<header class="lg:mb-20">
<div class="header-wrapper bg-gray-500 md:flex md:justify-between md:items-center md:px-4 md:py-3 w-full z-50 top-0 fixed">
</div>
</header>
Этот класс нужно добавлять только на мобильные устройства и только при открытом меню.
Надеюсь, это поможет!