Вы открываете сайт или приложение на iPhone, а вместо аккуратной вёрстки видите «сломанный» интерфейс: элементы наезжают друг на друга, шрифты огромные, кнопки не нажимаются, а картинки вылезают за границы экрана. Проблема знакома? Это типичные симптомы того, что layout не работает — браузер или приложение неправильно отображает HTML/CSS-код. В 80% случаев виноваты не разработчики ресурса, а настройки вашего устройства.
В этой статье мы разберём все возможные причины — от банальных ошибок масштабирования до глубоких багов WebKit (движка Safari), а также дадим пошаговые инструкции для каждой версии iOS (от 15 до 17). Особое внимание уделим различиям между iPhone 12/13/14/15, где проблема проявляется по-разному из-за разных экранов и процессоров. Если вы веб-разработчик — в конце статьи есть раздел с техническими нюансами для отладки.
1. Масштабирование экрана: самая частая причина
В 60% случаев «сломанный» layout на iPhone связан с некорректным масштабом страницы. Safari (и другие браузеры на базе WebKit) автоматически увеличивает текст для удобства чтения, но часто это ломает вёрстку. Особенно заметно на сайтах с фиксированной шириной или адаптивными гридами.
Как проверить:
- 🔍 Откройте проблемный сайт в Safari.
- 📱 Дважды тапните по экрану — если layout «встаёт на место», виноват масштаб.
- 🔄 Попробуйте повернуть устройство в альбомную ориентацию: если вёрстка исправляется, проблема в
viewport-метатеге сайта.
Как исправить:
- Откройте
Настройки → Safari → Настройки сайтов → Масштаб страницы. - Выберите «По умолчанию»** (не «Увеличить текст»!).
- Для конкретного сайта: нажмите
AAв адресной строке Safari и выберите «Масштаб 100%».
⚠️ Внимание: На iPhone 14 Pro/15 Pro с динамическим островом (Dynamic Island) масштабирование может сбиваться из-за бага в iOS 16.4-16.6. Обновитесь до iOS 17.2+, где проблема исправлена.
2. Проблемы с viewport-метатегом на сайте
Техническая причина: если сайт не имеет корректного <meta name="viewport">, Safari эмулирует ширину экрана 980px (как на десктопе), а затем масштабирует содержимое под мобильный экран. Это ломает адаптивную вёрстку.
Как проверить:
- 🌐 Откройте проблемный сайт на компьютере (в Chrome или Safari).
- 🔧 Нажмите
F12→Ctrl+Shift+M(эмуляция мобильного устройства). - 📏 Если в консоли видна ошибка
No viewport meta tag found, проблема на стороне сайта.
Решения:
- 📱 Для пользователей: напишите владельцам сайта (через форму обратной связи или соцсети) с просьбой добавить:
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no"> - 💻 Для разработчиков: проверьте, не перекрывается ли
viewportдругими метатегами (например,handheldfriendlyилиmobileoptimized).
Почему user-scalable=no может быть опасно?
Этот параметр блокирует zoom на сайте, что нарушает требования WCAG (доступность для людей с нарушениями зрения). В iOS 13+ Safari игнорирует его для текстовых блоков, но это может конфликтовать с кастомными JS-скриптами.
| Параметр viewport | Значение по умолчанию в Safari | Рекомендуемое значение |
|---|---|---|
width |
980px |
device-width |
initial-scale |
1.0 |
1.0 |
maximum-scale |
5.0 |
1.0 или 10.0 (для доступности) |
user-scalable |
yes |
no (только если критично для дизайна) |
3. Конфликты с расширениями и Content Blockers
Блокировщики рекламы (1Blocker, AdGuard), менеджеры паролей (1Password) и даже VPN-приложения могут модифицировать HTML/CSS страницы на лету. Это часто ломает вёрстку, особенно на сайтах с динамической загрузкой контента (например, Instagram, TikTok в веб-версии).
Как диагностировать:
- Откройте
Настройки → Safari → Расширения. - Отключите все расширения.
- Перезагрузите страницу. Если layout исправился — виновато одно из расширений.
Топ-5 расширений, ломающих вёрстку:
- 🚫 AdGuard Pro — блокирует не только рекламу, но и критические CSS-файлы.
- 🚫 Dark Reader — может конфликтовать с кастомными темами сайтов.
- 🚫 1Password — встраивает свои стили для форм авторизации.
- 🚫 Wipr — агрессивно модифицирует DOM.
- 🚫 Noir — темная тема, которая переопределяет цвета элементов.
Отключить все расширения в Safari|Проверить страницу в режиме инкогнито|Удалить кеш Safari (Настройки → Safari → Очистить историю)|Попробовать другой браузер (Chrome, Firefox)|Обновить расширения до последней версии-->
⚠️ Внимание: На iOS 17 появился баг, при котором Safari кэширует «сломанные» версии страниц, даже после отключения расширений. Чтобы сбросить кеш, перейдите в Настройки → Safari → Дополнительно → Данные веб-сайтов → Удалить все данные.
4. Баги WebKit в конкретных версиях iOS
Safari использует движок WebKit, и в некоторых версиях iOS есть критические баги, ломающие вёрстку. Например:
- 🐛 iOS 15.0-15.3: баг с
position: sticky— элементы прилипают не к верху экрана, а к Dynamic Island. - 🐛 iOS 16.1-16.3: проблемы с
aspect-ratioвCSS Grid. - 🐛 iOS 17.0: баг с
backdrop-filter: blur()— размытие работает только после скролла.
Решения:
- 📱 Обновите iOS до последней версии (баги часто исправляют в минорных апдейтах).
- 🔧 Для разработчиков: используйте
@supportsдля обхода багов:@supports not (aspect-ratio: 1/1) {.grid-item { height: calc(100vw / 3); }
}
Критическая информация для iPhone 14/15: в iOS 16.4 появился баг с отображением SVG-графики в WebKit, из-за которого иконки на сайтах отображаются размыто или с артефактами. Исправлено в iOS 17.1.
5. Проблемы с шрифтами и кодировками
Если на сайте используются кастомные шрифты (через @font-face), а они не загружаются, Safari подставляет системные шрифты (San Francisco), что ломает верстку. Чаще всего это происходит:
- 🔤 На сайтах с кириллицей/иероглифами (шрифты не поддерживают символы).
- 🌐 При медленном интернете (шрифты не успевают загрузиться).
- 🔒 Если сайт использует
font-display: swap, но запасной шрифт не указан.
Как исправить:
- В Safari отключите
Настройки → Safari → Дополнительно → Шрифты → Автоматическая замена шрифтов. - Для конкретного сайта: добавьте в закладки этот код (JavaScript-сниппет), который форсирует загрузку шрифтов:
javascript:(function(){var l=document.createElement('link');l.rel='stylesheet';l.href='https://fonts.googleapis.com/css?family=Roboto&display=swap';document.head.appendChild(l);})();
6. Аппаратные ограничения старых iPhone
На iPhone 6s/7/8 (с процессором A9-A11) Safari может неправильно рендерить современные CSS-свойства из-за ограничений GPU. Типичные симптомы:
- 🖼️
transform: translate3d()работает с лагами. - 🎨
filter: blur()илиbackdrop-filterне применяются. - 📱
position: fixedдергается при скролле.
Решения:
- 🔧 Включите
Настройки → Универсальный доступ → Уменьшение движения— это отключит анимации, разгрузив GPU. - 📱 Используйте Chrome или Firefox вместо Safari — они оптимизированы для слабых устройств.
- 🔄 Принудительно обновите WebKit через
Настройки → Основные → Обновление ПО(если доступно).
⚠️ Внимание: На iPhone SE (1-го поколения) с iOS 15+ может не работать CSS Grid из-за отсутствия аппаратного ускорения. Это известное ограничение Apple, исправить его нельзя — только обновить устройство.
7. Проблемы с JavaScript и динамической вёрсткой
Многие современные сайты (например, Twitter, Facebook, Tinder) используют JavaScript для рендеринга контента (SPA — Single Page Applications). Если JS-скрипты не выполняются или блокируются, вы увидите «голый» HTML без стилей.
Причины:
- 🚫 Блокировка скриптов в
Настройки → Safari → Дополнительно → JavaScript(должно быть ВКЛ). - 🛡️ Расширения типа uBlock Origin или Ghostery блокируют критические скрипты.
- ⚡ Медленный интернет — скрипты не успевают загрузиться за 3 секунды (таймаут Safari).
Как диагностировать:
- Откройте Safari → нажмите
AA→Показать веб-инспектор(нужен Mac с Xcode). - Проверьте вкладку
Consoleна ошибки типаFailed to load resource. - Если видите
Content Security Policyошибки — проблема на стороне сайта.
FAQ: Частые вопросы о проблемах с layout на iPhone
Почему на iPhone 13 Pro layout ломается только в портретной ориентации?
Это известный баг в iOS 15.4-16.1, связанный с некорректной обработкой safe-area-inset (отступов для Dynamic Island). Решение:
- Обновитесь до iOS 16.2+.
- Добавьте в CSS сайта (если вы разработчик):
@supports (bottom: env(safe-area-inset-bottom)) {body { padding-bottom: calc(10px + env(safe-area-inset-bottom)) !important; }
}
Как проверить, виноват ли сайт или мой iPhone?
Сравните отображение:
- 🌍 На другом устройстве (Android, Mac/PC).
- 📱 В другом браузере на том же iPhone (Chrome, Firefox).
- 🔍 Через Google Mobile-Friendly Test.
Если проблема только на вашем iPhone — читайте эту статью. Если везде — пишите владельцам сайта.
Почему после обновления iOS 17 layout стал хуже?
В iOS 17 Apple обновила WebKit до версии 17.0, где:
- Изменилась логика работы
viewportдля Dynamic Island. - Добавлена поддержка
color-mix()и:has(), что может конфликтовать со старыми стилями. - Ужесточились правила
CORSдля шрифтов.
Решение: очистите кеш Safari и перезагрузите устройство. Если проблема осталась — ждите патча от Apple (обычно выходит через 2-3 недели после мажорного апдейта).
Можно ли откатить WebKit до старой версии?
Нет, WebKit жёстко привязан к версии iOS. Единственные варианты:
- 📵 Использовать другой браузер (Chrome, Firefox, Edge — они используют свой движок на iOS 17+).
- 🔙 Откатиться на старую версию iOS (рискованно, потеряете данные).
- 🛠️ Если вы разработчик — тестируйте сайт в Xcode Simulator с эмуляцией старых версий iOS.
Почему в Chrome на iPhone layout работает, а в Safari — нет?
С 2023 года Chrome и Firefox на iOS используют собственные движки (не WebKit), поэтому могут отображать сайты иначе. Если вёрстка работает в Chrome, но не в Safari:
- Проблема в
WebKit-специфичных багах (см. раздел 4). - Включите в Safari опцию
Настройки → Safari → Дополнительно → Экспериментальные функции → CSS Grid Layout(если отключено).