Я испытываю что-то странное в iOS 12.3.1 Safari. Эта проблема относится как минимум к iOS 12.2, , но я думаю, что это было проблемой гораздо дольше.
Эта проблема проявляется при попытке выровнять элемент по нижней оси окна просмотра и является проблемой как в портретном, так и в ландшафтном режиме.
Чтобы воспроизвести проблему, элемент должен иметь position
из fixed
или absolute
, однако не имеет значения, располагаете ли вы элемент с помощью top
и transform
или bottom
.
Портретный режим
Проблема проявляется только в портретном режиме , если Safari отображает сокращенную строку URL-адреса, , которая заменяет обычные URL-адреса и строки меню, и вертикального переполнения нет.
Обычные строки URL и меню // Сжатая строка URL
Примечательно, что сжатая строка меню отображается только в случае вертикального переполнения, когда браузер прокручивается вниз или когда ориентация браузера была изменена с книжного на ландшафтный, а затем обратно (несмотря на то, существует или нет вертикальное переполнение). ).
Изменение ориентации с вертикальным переполнением // Без переполнения
Я не совсем уверен, что здесь происходит.
Пейзажный режим
Проблема с альбомным режимом всегда и возникает только тогда, когда в верхней части страницы отображается обычная панель навигации. Панель навигации скрыта только в ландшафтном режиме из-за прокрутки вниз или изменения ориентации с книжного на альбомный.
с вертикальным переливом
Без вертикального переполнения
Интересно то, что высота панели навигации в альбомном режиме явно смещает область просмотра, поэтому позиция bottom: 0
или top: 100%
перемещается за пределы области просмотра, когда отображается панель навигации.
Дрянной обходной путь для портретного режима
Это супер обходной обходной путь, и это дурацкий обходной путь, но пока это единственное, что заставляет position: fixed; bottom: 0;
фактически позиционировать элемент в нижней части области просмотра после переключения ориентации, если нет переполнения.
<div style='height: 0'>
<!-- the quantity of <br> elements must create vertical overflow -->
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
<!-- this does not work without the space character -->
</div>
Однако я только что заметил, что это создает невидимое вертикальное переполнение и, следовательно, ненужную вертикальную прокрутку, по крайней мере, в Safari и Chrome. Я также обеспокоен тем, что это может вызвать другие проблемы на других устройствах в другом браузере, которые я не могу проверить.
Абсолютно отстой, что из-за этой ошибки веб-сайт иногда выглядит как дерьмо для удобства пользователей.
Кто-нибудь знает, что происходит?
Кто-нибудь знает какие-либо обходные пути?
Кто-нибудь знает о реальном решении?