EDIT: Похоже, что эти проблемы были исправлены в iOS8. Считайте эту проблему ошибкой iOS7 и более ранних версий.
У меня есть некоторый контент (с учетом CORS), который я отправляю в iframe, и я хочу, чтобы он всегда был растянут в нижней части окна браузера. Мне нужно, чтобы этот контент сохранял то же соотношение сторон и заполнял всю ширину браузера, иначе все будет выглядеть странно. Поскольку у меня нет доступа к содержимому iframe, я использую -webkit-transform: scale для правильного размера всего.
Я рассчитываю масштабный фактор:
width = 600; // this is the original width of the iframe's contents and never changes
scaleFactor = window.innerWidth/width;
Затем я устанавливаю некоторый CSS на основе этого масштабного коэффициента всякий раз, когда размер window.innerWidth изменяется:
$container.css({
'width': (width * scaleFactor) + 'px',
'height': (height * scaleFactor) + 'px',
'padding': 0
});
$iframe.css({
'-webkit-transform': 'scale('+scaleFactor+')',
'transform': 'scale('+scaleFactor+')',
'-webkit-transform-origin': '0 0',
'transform-origin': '0 0'
});
Это отлично работает везде, кроме iOS, где оно начинает ломаться, если вы слишком сильно увеличиваете масштаб. iFrame начинает смещаться со страницы и становится недостаточно широким. Я понятия не имею, что здесь происходит.
Изображения того, о чем я говорю: Хорошее масштабирование, Плохое масштабирование.
У меня есть настройка тестовой страницы, которая наглядно демонстрирует проблему на любой iOS.
У кого-нибудь есть идеи?