iOS Safariでinputタグにフォーカスを合わせると、自動で画面が拡大してしまう原因と解決方法

iOS Safariでウェブサイト内のテキストフィールドをタップしてフォーカスを合わせたとき、画面が少し拡大されてしまうことがあります。
入力したあとはで縮小しないと、ずっと拡大されたままなので正直面倒です。
フォームのフォントサイズが16px未満だと拡大される
これはiOS Safariの仕様で、<input>タグのフォントサイズが16px未満のときに、そのタグにフォーカスされると自動で拡大されてしまいます。

See the Pen iOS|<input> font-size by Masakazu Saito (@31mskz10) on CodePen.
zoomプロパティでフォントサイズは16pxにしながら縮小して小さく表示させる
かなり邪道な方法ですが、「どうしてもこのフォームのフォントサイズは小さくしないといけないけど、拡大はさせたくない」という場合に、フォントサイズは16pxにしておきながら、zoomを使って小さくする方法があります。
input {
font-size: 16px; // フォントサイズは16pxにして拡大しないようにする
zoom: 0.75; // 倍率を指定して表示を小さくする
}見た目上は小さく表示されていますが、実際のフォントサイズは16pxなので、フォーカスしても拡大されません。
しかしこの方法は、レイアウトがかなり面倒になりますし、思わぬ表示崩れを生む可能性があります。
「そこまでする意味があるの?」を考えないと、ただただ時間がかかるだけの実装になってしまいます。
デザインから知っておく必要がある
ウェブサイトを実装したりデザインするときに、なぜこうなるのか知っておかないと、ユーザーに余計なストレスを与えてしまうことになります。
今回の問題は実装観点の話ですが、デザイナーも知っておかないと深く考えずに15pxの指定をしてしまいそうです。
inputの中の文字は普通にデザインしていると通常文字より小さくなってしまう場合がありますが、本当に16px未満にするべきなのかどうか考えてデザインする必要がありそうです。

JavaScriptのtest関数と正規表現でバリデーションチェックを行う
WordPressでコンタクトフォームを設置したいならこれ!!Contact Form 7のインストール方法
iOSシミュレーターを使ってWebサイトを開発者ツールを見ながら実機表示で開発する方法
手軽にコーディングの勉強ができるCodePenをもっと便利に使うための設定
Visual Studio Codeのファイル横に表示されるファイルアイコンのテーマまとめ
pointer-eventsプロパティでクリックイベントを無効化にする|気になるCSSプロパティ
コーディング時のclass名の省略はどこまでして良いのか?「img / btn / ttl / desc / thumb」
アクセス解析ツールの定番!!Googleアナリティクスの登録方法
gulp 4.0から新しく加わったseriesとparallelについての備忘録
WordPressのプラグインはどれを入れたら良い?とりあえず最初に導入をオススメするプラグイン一覧
AirPodsで片耳を外しても再生が止まらないようにする方法
MacのKeynoteにハイライトされた状態でコードを貼り付ける方法
iTerm2でマウスやトラックパッドの操作を設定できる環境設定の「Pointer」タブ
DeepLで「インターネット接続に問題があります」と表示されて翻訳できないときに確認すること
Ulyssesの「第2のエディタ」表示を使って2つのシートを横並びに表示する
Macでデュアルディスプレイ時に、通知を表示するディスプレイを指定する方法
Dashの時間と日付のフォーマット設定方法
Keyboard Maestroにサードパーティ製アクションを追加する方法
macOS Mojaveのスクリーンショット機能についてまとめる
CSS Nite in Kobe, vol.41「最新ネット広告の打ち手を学ぶ1dayレッスン 〜レスポンシブ検索広告からAmazon広告、ストーリーまで」に参加してきました
HyperSwitchをインストールしておくと「隠す(command + M)」で隠したウインドウもすぐ開けるようになる
Google Chromeのブックマークを綺麗に整理するコツ
Visual Studio Codeで連番を入力する拡張機能「vscode-input-sequence」
Ulyssesで特定シートに移動するリンクの作成方法