Однако пользователи по-прежнему смогут прокручивать всю страницу вверх на 400 пикселей, то есть внизу они увидят 400 пикселей пустого пространства. Как я могу предотвратить появление этого пустого места, сохраняя при этом прикрепленный верхний/нижний колонтитул?
Я пробовал:
- Обнаружение событий прокрутки, но они не запускаются
- Использование IntersectionObserver для элемента ниже области просмотра 600 пикселей, но он никогда не срабатывает
- Использование позиции : исправлено в нижнем колонтитуле, но это не прилипает к низу при прокрутке.
- Позиция прокрутки документа по оси Y всегда равна 0.
- Настройка navigator.virtualKeyboard.overlaysContent не работает. ничего не делаю
Демо-видео, начальное нижнее пустое пространство — это клавиатура: https://i.imgur.com/OMSXAAt.mp4
Изменить
Я нашел хакерское решение, используя window.visualViewport.addEventListener('scroll ', ...). При прокрутке я бы добавил отступ в верхнюю часть страницы, равный window.visualViewport.offsetTop. Однако существует некоторая задержка, поэтому пользователи могут немного прокрутить, а затем запускается обработчик прокрутки. В iOS Safari задержка может составлять более 1 секунды. Есть ли лучшее решение?
Подробнее здесь: https://stackoverflow.com/questions/766 ... oards-open