뚠뚠멍의 생각들

Мои проблемы с кросс-браузерной совместимостью (в основном Safari)

  • Язык написания: Корейский
  • Страна: Все страныcountry-flag
  • ИТ

Создано: 2024-09-27

Создано: 2024-09-27 21:56

О двух головных проблемах кросс-браузерной совместимости, с которыми я столкнулся при разработке мобильной веб-версии, и других моментах, которые необходимо учитывать

я хочу сделать запись.


Проблема расчета высоты viewport из-за собственной адресной строки и навигационной панели браузера


В Safari и Samsung Internet в браузере есть собственная нижняя навигационная панель. Если специально не задано show/hide, то при прокрутке вниз она появляется, а при прокрутке вверх исчезает.

Проблема в том, что из-за этого viewport не фиксируется и изменяется.

Например, если задана высота 100vh, то при отсутствии навигационной панели макет отображается корректно, но при появлении навигационной панели она перекрывает элементы UI.

Чтобы решить эту проблему,

1. Используйте dvh.

Dvh — это динамический viewport, автоматически адаптирующийся к изменению высоты viewport. Таким образом, можно реагировать на изменения макета UI в зависимости от наличия адресной строки или нижней навигации.


2. Можно также рассмотреть svh.

Svн — это высота области UI без учета адресной строки или навигации. В ситуациях, когда предполагается появление адресной строки или навигации, использование svh будет более точным.



Проблема смещения UI из-за виртуальной клавиатуры при выборе (фокусировке) input

В мобильной версии Safari при выборе input из-за виртуальной клавиатуры возникла проблема смещения существующих элементов UI. В других браузерах виртуальная клавиатура обычно отображается как absolute, но в мобильной веб-версии Safari она занимает место, как будто применен display: block.


В Safari при появлении виртуальной клавиатуры высота viewport динамически изменяется, что приводит к перерасчету элементов, использующих vh, и вызывает проблему. Чтобы решить это,


1. Используйте min-height.

Фиксируется высота, чтобы предотвратить смещение UI.


2. Примените префиксы поставщиков. (Подробно описано ниже)

Добавьте атрибут, который применяется в определенных браузерах, таких как Safari.


3. Динамически управляйте viewport с помощью JavaScript.

* Этот способ не рекомендуется. Мгновенное изменение высоты прокрутки приводит к мерцанию макета.

На событие resize вешается обработчик, который отслеживает изменения viewport и применяет соответствующий стиль.


3-1. Управляйте положением при возникновении события focusin.


3-2. Управляйте положением при появлении виртуальной клавиатуры. (В примере ниже используется добавление класса)


Наиболее желательно решить проблему только с помощью CSS, но если вышеуказанные методы не помогли, проверьте, является ли элемент с position: absolute или fixed, и попробуйте изменить CSS, удалив атрибуты top, right, left, bottom.


Другое

Я также нашел несколько моментов, которые следует учитывать при разработке мобильной веб-версии для Safari.

1. При использовании некоторых атрибутов используйте префиксы поставщиков.

* Префиксы поставщиков — это префиксы, которые позволяют браузеру понимать и обрабатывать определенные атрибуты CSS, гарантируя, что CSS, реализованный по-разному в разных браузерах, будет работать как задумано. Это обеспечивает согласованность между браузерами и совместимость со старыми версиями браузеров.


Типы

-webkit-: Chrome, Safari и т.д.
-moz-: Mozilla Firefox
-ms-: Internet Explorer и Edge
-o-: Opera


Типичные атрибуты, для которых требуются префиксы поставщиков, приведены ниже.


Кроме того, Safari ограничивает объем LocalStorage и SessionStorage примерно 5 МБ, и важно отметить, что пространство хранения не совместно используется между вкладками.



Комментарии0

Оптимизация мобильного SEO: создание мобильного сайтаРуководство по оптимизации мобильного SEO. Включает в себя адаптивный веб-дизайн, высокую скорость загрузки, простую навигацию, дизайн, удобный для сенсорного управления, оптимизированный для мобильных устройств контент, использование Google AMP и Search
꿈많은청년들
꿈많은청년들
꿈많은청년들
꿈많은청년들

June 10, 2024

Почему вам не нужно планировать свой веб-сайт как адаптивный?Мы расскажем вам, как создать оптимизированный для мобильных устройств веб-сайт без необходимости планирования адаптивного веб-сайта. Сохраняйте контент последовательным на настольных компьютерах, планшетах и мобильных устройствах, экономя время и деньги.
리틀리 블로그|올인원 프로필 링크
리틀리 블로그|올인원 프로필 링크
리틀리 블로그|올인원 프로필 링크
리틀리 블로그|올인원 프로필 링크

May 29, 2024

Часто задаваемые вопросы (FAQ) по написанию статейЗдесь собраны ответы на часто задаваемые вопросы (FAQ) по написанию статей. Вы найдете ответы на вопросы о переносе строки, изменении цвета текста, настройке заголовков и основного текста, добавлении описания к изображениям, редактировании предварительно
durumis official blog
durumis official blog
durumis official blog
durumis official blog

January 25, 2024

[8 дней] Весёлое создание игр вместе с ИИДневник разработки AI-игры за 8-й день. Возникли сложности с улучшением UI/UX, но они были решены путем перехода на боковую панель с переключателем, что оптимизировало игру для мобильных устройств. Следующий этап — улучшение боевой системы и создание игр
꼬반
꼬반
꼬반
꼬반

November 14, 2024