だから私は使用しています:
<meta name="viewport" content="width=device-width; initial-scale=1.0; maximum-scale=1.0;"/>
hTMLコンテンツをiPhoneできれいに表示できるようにします。ユーザーがデバイスを回転させて表示を320ピクセルに制限したままにする横向きモードになるまで、これは非常に効果的です。
ユーザーがデバイスの向きを変更したことに応じて変化するビューポートを指定する簡単な方法はありますか?それとも、それを処理するためにJavascriptに頼らなければなりませんか?
自分でこれを解決しようとしていましたが、私が思いついた解決策は次のとおりです:
<meta name="viewport" content="initial-scale = 1.0,maximum-scale = 1.0" />
これは、デバイスの向きに関係なく、デバイスを1.0スケールにロックするようです。ただし、副作用として、ユーザースケーリング(ピンチズームなど)は完全に無効になります。
まだ興味がある人のために:
http://wiki.phonegap.com/w/page/16494815/Preventing-Scrolling-on-iPhone-Phonegap-Applications
ページから:
<meta name="viewport" content="user-scalable=no,width=device-width" />
これにより、ユーザーが「ピンチ」ジェスチャーでページを拡大できないようにSafariに指示し、ビューポートの幅を、iPhoneがどの方向にある場合でも画面の幅に固定します。
あなたがそれを助けることができるなら、あなたはユーザースケーリングオプションを失いたくありません。 here のこのJSソリューションが気に入っています。
<script type="text/javascript">
(function(doc) {
var addEvent = 'addEventListener',
type = 'gesturestart',
qsa = 'querySelectorAll',
scales = [1, 1],
meta = qsa in doc ? doc[qsa]('meta[name=viewport]') : [];
function fix() {
meta.content = 'width=device-width,minimum-scale=' + scales[0] + ',maximum-scale=' + scales[1];
doc.removeEventListener(type, fix, true);
}
if ((meta = meta[meta.length - 1]) && addEvent in doc) {
fix();
scales = [.25, 1.6];
doc[addEvent](type, fix, true);
}
}(document));
</script>
私はクロスプラットフォームで動作するはずの少し異なるアプローチを考え出しました
http://www.jqui.net/tips-tricks/fixing-the-auto-scale-on-mobile-devices/
これまでのところ、私はでテストしました
サムスン銀河2
iphone 4
@media screen and (max-width:800px) {
これは、モバイル開発の大きな前進です...
スケールできないように設定しているため(最大スケール=初期スケール)、ランドスケープモードに回転したときにスケールアップできません。 maximum-scale = 1.6に設定すると、ランドスケープモードに合わせて適切にスケーリングされます。
私はこの問題を自分で抱えていて、幅を設定し、回転時に更新し、ユーザーがページをスケーリングおよびズームできるようにしたかったのです(現在の答えは最初に提供されますが、副作用としては)..そのため、ビューの幅を方向に合わせて正確に保ちながら、ズームを可能にする修正を思い付きました。
まず、表示しているWebページに次のJavascriptを追加します。
<script type='text/javascript'>
function setViewPortWidth(width) {
var metatags = document.getElementsByTagName('meta');
for(cnt = 0; cnt < metatags.length; cnt++) {
var element = metatags[cnt];
if(element.getAttribute('name') == 'viewport') {
element.setAttribute('content','width = '+width+'; maximum-scale = 5; user-scalable = yes');
document.body.style['max-width'] = width+'px';
}
}
}
</script>
float availableWidth = [EmailVC webViewWidth];
NSString *stringJS;
stringJS = [NSString stringWithFormat:@"document.body.offsetWidth"];
float documentWidth = [[_webView stringByEvaluatingJavaScriptFromString:stringJS] floatValue];
if(documentWidth > availableWidth) return; // Don't perform if the document width is larger then available (allow auto-scale)
// Function setViewPortWidth defined in EmailBodyProtocolHandler prepend
stringJS = [NSString stringWithFormat:@"setViewPortWidth(%f);",availableWidth];
[_webView stringByEvaluatingJavaScriptFromString:stringJS];
ビューポートのコンテンツ設定をさらに変更することで、追加の調整を行うことができます。
---(http://www.htmlgoodies.com/beyond/webmaster/toolbox/article.php/3889591/Detect-and-Set-the-iPhone--iPads-Viewport-Orientation-Using-JavaScript-CSS-and -Meta-Tags.htm
また、onresizeまたは再スケーリングをトリガーするようなもののためにJSリスナーを配置できることを理解していますが、Cocoa Touch UIフレームワークからやっているのでこれはうまくいきました。
これが誰かを助けることを願っています:)
<meta name="viewport" content="width=device-width, minimum-scale=1, maximum-scale=1">
すべてのiPhone、すべてのiPad、すべてのAndroidをサポートしています。