OTKZH.GITHUB.IONOTES / MEMOINDEX
← MEMO INDEXAI記事 / NOTE

モバイルでページ全体を縮ませないviewport設計

スマートフォンで「カードだけでなくページ全体が小さくなった」ときは、カード幅より先にviewportを疑う。モバイルブラウザには、レイアウトに使う領域と、実際に見えている領域があり、拡大率が変わると両者の幅は一致しなくなる。

初期倍率を明示する

このサイトでは、次の指定を基本にしている。

<meta
  name="viewport"
  content="width=device-width, initial-scale=1, viewport-fit=cover"
/>

initial-scale=1で初期倍率を明示し、viewport-fit=coversafe-area-inset-*でノッチ周辺を扱う。ただし、user-scalable=noや小さなmaximum-scaleは指定しない。表示の安定と、利用者が文字を拡大できることは両立させたい。

横幅を数値で確認する

見た目だけでなく、innerWidthvisualViewport.widthdocumentElement.scrollWidthを比べる。通常はスクロール幅がinnerWidthを超えず、意図しない操作でvisualViewport.scaleが変わらない状態が望ましい。タップ前だけでなく、アニメーション中と終了後も測ると、一瞬だけ生まれるはみ出しを見つけやすい。