スマホでフォームを触ったら、画面が勝手に寄った。犯人は文字の大きさだった

入力欄をタップした瞬間にページが拡大して、そのまま戻らない。
iPhoneでよく起きるあの動きには、はっきりした条件があった。

自分のサイトの問い合わせフォームを、久しぶりにスマホで開いた。
名前の欄をタップした瞬間、画面がぐっと寄った。
文字が大きくなったのではなく、ページ全体が拡大されて右側がはみ出している。
そのまま打ち込んで送信ボタンを探したら、画面の外にあった。

パソコンで作っているとまず気づかない。
僕もずいぶん長いあいだ、そのまま置いていた。

なぜ勝手に拡大するのか

これは不具合ではなく、ブラウザが親切のつもりでやっている動きだ。
iPhone の Safari は、入力欄の文字がある大きさより小さいと「このままでは打つ人が読めない」と判断して、ページのほうを自動的に拡大する。
その境目が16pxで、15pxだと寄って、16pxだと寄らない。
1pxしか違わないのに、起きるか起きないかがきれいに分かれる。

Android の主要なブラウザでは、同じ動きをしない。
手元の確認用の端末が Android だけだと、この症状は一生見えないままになる。
僕が長く気づかなかったのも、たぶんそれが理由だった。

本当に困るのは、拡大したあと

拡大されること自体は、実はそれほど問題ではない。
困るのは、勝手に寄ったあと自分では元に戻らないことだ。

横に広がったまま次の欄へ移るので、指で戻しながら入力することになる。
送信ボタンが画面の外に出てしまい、押せないと思ってやめる人も出る。
そもそも「触ったら画面が勝手に動いた」という体験そのものが、この先を触るのが怖い、という感じにつながる。

問い合わせが少ない原因を、僕は文章と導線のほうに探していた。
実際にはその手前で、指が止まっていたわけだ。

直し方は、ほとんど一行で済む

入力欄の文字を16px以上にする。
対象は input と textarea と select の三つで、これだけで寄らなくなる。

画面が狭いときだけ16pxにする、という書き方もできる。
ただ僕は全部16pxで揃えてしまった。
パソコンで見ても16pxの入力欄が読みにくいということはないし、条件を分けるほど、あとから触ったときに壊す。

「入力欄が大きく見えて不格好だ」と感じるなら、直すのは文字ではなく余白のほうがいい。
上下の余白と枠の高さを詰めれば、文字は16pxのまま見た目は落ち着く。
小さく見せたいという気持ちの正体は、たいてい文字の大きさではなく欄の高さのほうだった。

やってはいけない直し方

調べると、ページの設定で拡大そのものを禁止する方法が出てくる。
たしかにこれでも寄らなくなる。
ただこれは、拡大が必要な人からピンチ操作を取り上げる直し方だ。

小さい字が読みにくい人は、指で広げて読んでいる。
こちらの都合で勝手に寄るのを止めたいだけなのに、その人が読む手段まで一緒に消してしまう。
原因が文字の大きさなのだから、文字の大きさで直すのが筋だと思う。

ついでに直した二つ

電話番号の欄とメールアドレスの欄に、種類を指定し直した。
種類を書いておくと、スマホのキーボードが数字だけになったり、アットマークが最初から出ていたりする。
打つ手間が減るぶん、途中でやめる人が減る。

もうひとつは、項目の名前をタップしても入力欄に入るようにしたことだ。
指で狙う的が広がるので、押し間違いが目に見えて減った。

フォームは、書いた文章より先に触られる場所だ。
寄るか寄らないかは些細な話に見えて、触った人の一手目の印象をそっくり決めていた。
リンクの見え方について書いた下線の回と、結局は同じことを言っている気がする。

スタンプラリーに挑戦する 行った場所・気になる場所は、現地チェックインでスタンプに残せます。 みんなのコースを見てみる 会員が作ったスポット巡りのコースを都道府県から探せます。自分だけのコースも作れます。

技術ブログ一覧へ戻る