iPhoneの向きが縦向きから横向きに変わったときにHTMLフォントサイズを保持する


203

私は、各li内にハイパーリンクを含む複数のリストアイテムを含む順不同リストのモバイルWebアプリケーションを持っています。

...私の質問は、iPhoneで表示したときにハイパーリンクのサイズが変更されず、加速度計が縦向きから横向きに切り替わるようにハイパーリンクをフォーマットするにはどうすればよいですか?現在、ハイパーリンクのフォントサイズの仕様は14pxになっていますが、横長に切り替えると、20px程度まで吹き飛ばされます。font-sizeを変更しないでください。これがコードです:

ul li a
{
  font-size:14px;
  text-decoration: none;
  color: #cc9999;
}
<ul>
  <li id="home" class="active">
    <a href="home.html">HOME</a>
  </li>
  <li id="home" class="active">
    <a href="test.html">TEST</a>
  </li>
</ul>

回答:


434

この動作を無効にするには、-webkit-text-size-adjustCSSプロパティを使用します。

html {
    -webkit-text-size-adjust: 100%; /* Prevent font scaling in landscape while allowing user zoom */
}

このプロパティの使用については、「Safari Webコンテンツガイド」で詳しく説明しています。


4
snobojohanが指摘するように、これをランドスケープ固有のメディアクエリにラップして、デスクトップブラウザのフォントサイズを拡大する機能を維持できます。これは、ピンチズームが機能するiOSターゲットページでは必要ありません。
マットスティーブンス

この機能は、iOS6では機能しません。<meta content="viewport"メタタグを使用することもできます(下記参照)
Dan

13
使用しないでくださいnone使用し、100%代わりにそれはだあなたが望む行動:blog.55minutes.com/2012/04/iphone-text-resizing
fregante

1
ありがとうございました...横向きのxDでのフォントサイズ設定で何が起こっているのかを把握しようとしています
ジェフシェーバー

3
@ bfred.it +1、この変更でこの回答を編集する価値があると思います。

106

注:使用する場合

html {
    -webkit-text-size-adjust: none;
}

これにより、デフォルトのブラウザでのズーム動作が無効になります。より良い解決策は:

html {
    -webkit-text-size-adjust: 100%;
}

これにより、デスクトップの動作を変更することなく、iPhone / iPadの動作が修正されます。


25

-webkit-text-size-adjust:noneを使用します。HTMLに直接アクセスすると、すべてのWebkitブラウザでテキストをズームする機能が無効になります。これをiOS固有のsomメディアクエリと組み合わせる必要があります。例えば:

@media only screen and (min-device-width : 320px) and (max-device-width : 1024px) {
     html {
        -webkit-text-size-adjust: none;
     }
}

おかしなことに、私はメディアクエリ内に-webkitプロパティを配置するだけで機能しました。ありがとう!
zuallauz

12

前述したように、CSSルール

 -webkit-text-size-adjust: none

最近のデバイスでは動作しません。

さいわい、iOS5とiOS6に新しいソリューションが追加されました ToDo :iOS7はどうですか?)

<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0">

追加, user-scalable=0してピンチズームをオフにすることもできます。これにより、Webサイトはネイティブアプリのように動作します。ユーザーがズームしたときにデザインが機能しなくなった場合は、代わりに次のメタタグを使用してください。

<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">

まあ、良い質問は、このメタタグでコンマまたはセミコロンの区切り文字を使用するかどうかです。しかし、それは動作します:)
Dan

2
<meta name="viewport" content="width=device-width, initial-scale=1.0">はそれが効果を発揮するために必要なだけです。
Foxinni 2013

1
@Foxinni:ありがとう、回答を更新しました。最初の2つのメタタグは、初期のiOSバージョンから非推奨となったゴミであると思います
Dan

10

HTMLヘッダーにメタを追加できます。

<meta name="viewport" content="width=device-width; initial-scale=1.0; maximum-scale=1.0; user-scalable=0;" />


9

crazygringoが推奨するのと同じルールが含まれているnormalize.cssなどのCSSリセットの使用を選択することもできます。

/**
 * 2. Prevent iOS text size adjust after orientation change, without disabling
 *    user zoom.
 */

html {
  -ms-text-size-adjust: 100%;
  -webkit-text-size-adjust: 100%;
}

ご覧のとおり、IE Phoneのベンダー固有のルールも含まれています。

さまざまなブラウザーでの実装に関する最新情報については、MDNリファレンスページを参照してください


3

以下のコードは私にとってはうまくいきます。

html{-webkit-text-size-adjust: 100%;}

動作しない場合は、ブラウザのキャッシュをクリアしてみてください。



0

私の場合、この問題はwidth: 100%、HTMLタグにCSS属性を使用したことが原因input type="text"です。

の値widthを60%に変更して追加しpadding-right:38%ます。

input {
    padding-right: 38%;
    width: 60%;
}
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.