ページのビューポート幅を横向きで 950px、縦向きで 630px にする必要があります。残念ながら、これらのピクセル幅には柔軟性がありません。
CSS メディア クエリを使用して、向きに基づいて DOM コンテンツの幅を調整しています。
方向の変更時にビューポートのサイズを変更するために、JS で方向変更イベントをリッスンしています。
最初のページ読み込み (縦または横) では、すべてが適切に表示されます。
ただし、向きを変更すると、Mobile Safari はビューポートを画面に合わせずに、以前のスケール設定を保持します。1 回か 2 回ダブルタップすると、まっすぐになります。しかし、私はそれを自動にする必要があります。
以下にソースを添付し、デモURLにアップロードしました。
以下は、横向きから縦向き、縦向きから横向きに変更した後のスクリーン キャプチャです。
Safari でビューポートの幅を画面の幅に自動的に設定するにはどうすればよいですか? それとも、私はこれについてすべて間違っていますか?
ビューポートでさまざまなスケール設定を変更しても効果がありませんでした。maximum-scale=1.0
orを設定するinitial-scale=1.0
と、 my が上書きされ、(iPad 2 では 1024 または 768 に) 設定されているように見え、デッド マージン スペースが残りますwidth
。設定は何もしないようです。width
device-width
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>