WEB制作(html・css(スタイルシート))に関する各種メモ書き

iPhoneのsafariでフォーム入力の時に自動的に画面拡大するのを防ぐ

iPhoneなどスマホサイトでWebページのフォーム入力時に自動的に画面が拡大することがありますが、これは

フォームのフォントサイズが16pxより小さい

場合に発生します。

これを防ぐには以下A、B、Cのいずれかの方法を使用します。

A. フォームのフォントサイズを16px以上にする(CSSファイルに記述)

input,select,textarea{
   font-size:16px;
}
@media (max-width: 768px) {
  input, select, textarea {
    font-size: 16px;
  }
}

B. viewport設定を行う(HTMLファイルに記述)

例:

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

C. jQueryを使って任意のタイミングで拡大率を元に戻す(JavaScript)

何かのタイミングで以下のJavaScriptを実行して動的にviewportを書き換えると拡大率が変更(下記の例では等倍)できます。

$("meta[name='viewport']").attr('content','width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no');

JavaScriptで強制的にフォーカスさせたときに拡大するのを防ぐ

いくらviewportでuser-scalable=noを設定していてもJavaScriptでフォームに強制的にフォーカスした時は画面が拡大されることがあります。

その場合は

$("meta[name='viewport']").attr('content','width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no');
$("#hoge").css("font-size",'16px');
$("#hoge").trigger("focus");
$("#hoge").css("font-size",'');

として無理やり16pxにする方法で回避できます。

関連エントリー

No.936
10/09 19:59

edit

携帯スマホサイト
iPhone
jQuery