Мне нужна ширина области просмотра для страницы размером 950 пикселей в альбомной ориентации и 630 пикселей в портрете. Эти ширины пикселей, к сожалению, негибкие.
Я настраиваю ширину содержимого DOM на основе ориентации с использованием запросов в формате CSS.
Я слушаю события изменения ориентации в JS для изменения размера окна просмотра при изменении ориентации.
Все выглядит хорошо при начальной загрузке страницы (портретной или альбомной).
Однако после изменения ориентации Mobile Safari сохраняет предыдущий масштаб, вместо установки окна просмотра на экран. Двойной кран или два выпрямляют его. Но мне нужно, чтобы это было автоматически.
Я добавил источник ниже и загрузил его в демонстрационный URL.
Ниже приведены снимки экрана, сделанные после изменения ориентации: от пейзажа до портрета и от портрета к пейзажу.
Как заставить Safari автоматически устанавливать ширину окна просмотра на ширину экрана? Или я все об этом неправильно?
Изменение настроек масштаба в окне просмотра не помогло. Настройка maximum-scale=1.0
или initial-scale=1.0
кажется переопределяющей мой width
, установка width
на device-width
(т.е. 1024 или 768 на моем iPad 2), оставляя пространство мертвого поля. Установка minimum-scale=1.0
кажется, ничего не делает.
<!DOCTYPE html>
<html>
<head>
<title>iPad orientation</title>
<meta name="viewport" content="user-scalable=yes">
<script src="jquery-1.4.2.min.js" type="text/javascript"></script>
<script type="text/javascript" charset="utf-8">;
/**
* update viewport width on orientation change
*/
function adapt_to_orientation() {
// determine new screen_width
var screen_width;
if (window.orientation == 0 || window.orientation == 180) {
// portrait
screen_width = 630;
} else if (window.orientation == 90 || window.orientation == -90) {
// landscape
screen_width = 950;
}
// resize meta viewport
$('meta[name=viewport]').attr('content', 'width='+screen_width);
}
$(document).ready(function() {
// bind to handler
$('body').bind('orientationchange', adapt_to_orientation);
// call now
adapt_to_orientation();
});
</script>
<style type="text/css" media="screen">
body {
margin: 0;
}
#block {
background-color: #333;
color: #fff;
font-size: 128px;
/* landscape */
width: 950px;
}
#block .right {
float: right
}
@media only screen and (orientation:portrait) {
#block {
width: 630px;
}
}
</style>
</head>
<body>
<div id="block">
<div class="right">→</div>
<div class="left">←</div>
</div>
</body>
</html>