iPhoneなどスマホサイトでWebページのフォーム入力時に自動的に画面が拡大することがありますが、これは
フォームのフォントサイズが16pxより小さい
場合に発生します。
これを防ぐには以下A、B、Cのいずれかの方法を使用します。
input,select,textarea{
font-size:16px;
}
@media (max-width: 768px) {
input, select, textarea {
font-size: 16px;
}
}
例:
<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" />
何かのタイミングで以下のJavaScriptを実行して動的にviewportを書き換えると拡大率が変更(下記の例では等倍)できます。
$("meta[name='viewport']").attr('content','width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no');
いくら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にする方法で回避できます。