Почему страница (верстка) исчезает в Safari и как это можно исправить?

Почему отображение веб-сайта различается между Safari и Chrome без доступа к устройствам Apple для отладки? Верстка выполнена на React и Typescript, и на ПК отображаются таблицы, а на телефоне - списки ul li. Почему могла возникнуть проблема с версткой, несмотря на использование CSS-префиксов? Если у вас есть идеи, пожалуйста, поделитесь.
Изображение к вопросу
Изображение к вопросу
  • 9 февраля 2024 г. 11:18
Ответы на вопрос 2
Верстка страницы может исчезнуть в Safari (или повести себя не так, как ожидается) по нескольким основным причинам:

1. Специфика Safari: Safari имеет отличия в реализации некоторых CSS-свойств и JavaScript API по сравнению с другими браузерами, например Chrome. Даже если вы используете CSS-префиксы, некоторые особенности могут работать иначе, или в более старых версиях Safari они могут быть не поддержаны вовсе.

2. Несоответствующие CSS-префиксы: Браузер Safari использует префиксы, отличающиеся от других браузеров (например, `-webkit-`), и, если они не были добавлены в стили, то определенные свойства могут не применяться.

3. Ошибки JavaScript: Ошибки в JavaScript могут привести к тому, что часть функционала или отображения сайта не будет работать в Safari. Safari может отличаться в интерпретации JavaScript по сравнению с Chrome.

4. Особенности рендеринга: Safari может интерпретировать верстку по-другому, особенно если используются устаревшие или экспериментальные технологии.

5. Использование неподдерживаемых функций: Если на вашем сайте используются новейшие API, которые ещё не поддерживаются Safari, это может привести к проблемам с отображением.

Для диагностики и исправления проблемы вы можете воспользоваться следующими подходами:

- Воспользуйтесь эмуляторами или сервисами для тестирования на различных устройствах, такими как BrowserStack или LambdaTest, чтобы визуально проверить, как ваша страница отображается в Safari.
- Проверьте консоль разработчика в Safari на наличие ошибок JavaScript или предупреждений CSS.
- Убедитесь, что вы использовали все необходимые вендорные префиксы для CSS-свойств и проверьте их актуальность с помощью сервисов вроде Can I Use.
- Попробуйте применять CSS-свойства, которые имеют более широкую поддержку браузеров.
- Используйте полифиллы для эмуляции поддержки более новых функций API в более старых браузерах.
- Обратите внимание на условные комментарии и характерные для Safari методы определения возможностей (feature detection) и загрузки стилей.
- Подумайте о внедрении пошагового улучшения (progressive enhancement), чтобы базовая функциональность сайта поддерживалась везде, даже если некоторые более новые особенности не поддерживаются.

Обратившись к сообществам разработчиков веб, таким как Stack Overflow, или к документации по кросс-браузерной верстке, вы можете найти конкретное решение, применимое к вашей проблеме. Не забывайте, что даже при использовании всех доступных инструментов и практик, кросс-браузерная совместимость остаётся одной из главных задач веб-разработки и требует тщательного тестирования и отладки.
Я нашел решение. 

Спасибо этому сервису - https://live.browserstack.com/
там я бесплатно доступ к удаленному пк с safari получил на 10 минут.

Короче проблема была в том что у меня таблицы в верстке использовались (решил выебнуться и на них сверстать чтобы если контента много будет, то он связно и резиново двигался бы)
и у controls(верхней штуки где по логике должны быть кнопки) я через thead tr pos relative и ::after задал background с border-radius
(т.к у ебучих таблиц border-radius не задается) . в этом и была проблема.

НЕ ИСПОЛЬЗУЙТЕ ::AFTER/::BEFORE на таблицах.
Похожие вопросы