デザインカンプを渡したのに、上がってきた実装が「なんとなく違う」。並べて重ねると、余白や文字が1〜2pxずれている。この小さな差は、担当者の不注意というより、ブラウザの描画とデザインツールの前提が食い違うことで生まれます。

この記事では、その1pxがどこから来るのかを実装する側から整理し、私がどう潰しているかを書きます。原因が分かれば、差し戻しの往復もぐっと減ります。

1pxのズレは「丸め」から始まる

いちばん多いのが、小数の丸めです。デザインツールは座標や幅を小数で持てますが、ブラウザは最終的に物理ピクセルへ落とし込みます。このとき端数が切り上げ・切り捨てされ、要素の位置が1pxずれます。

  • 幅や余白に小数が混ざると、行ごとに丸め方向が変わる
  • 3分割・7分割など、割り切れない値は特にずれやすい
  • 高解像度ディスプレイでは半px単位の差が見え方に出る
1pxのズレが起きる主な原因を6項目で示した図

丸め自体は避けられませんが、どこで起きるかを予測して値の持ち方を決めれば、影響は最小限にできます。私は分割レイアウトでは端数の出方を先に確認し、必要なら余白側で吸収するようにしています。

文字まわりは「メトリクス」の差が効く

文字は座標だけでなく、フォントの中身が仕上がりを左右します。同じフォントサイズでも、書体ごとに文字の上下に取る余白(メトリクス)が違い、それが行の高さや文字の位置に効いてきます。

  • line-heightの解釈:行の高さは文字の上下に均等に分かれて乗るため、テキストの見た目の位置がカンプとずれる
  • letter-spacing:多くの環境で最後の文字の後ろにも字間が乗り、右端が想定より外へ出る
  • フォントの置換:デザイン時と実装時でフォントが完全一致しないと、字幅や行数が変わる

カンプ上の文字ボックスと、ブラウザが実際に描く文字ボックスは別物です。ここを合わせるには、行間の上下差を打ち消したり、末尾の字間を調整したりと、地味な手当てが要ります。Figmaのデータを実測しながら詰める進め方は、Figma・XDからのコーディング依頼でも触れています。

画像とボックスモデルの取り違え

画像の書き出しも、境界のにじみを生みます。等倍でない倍率で書き出したり、想定と違うサイズで配置したりすると、輪郭が半px単位でぼやけて「1pxずれて見える」状態になります。

ボックスの計算違いも定番です。box-sizingの指定によって、指定した幅にborderやpaddingが含まれるかが変わります。ここを取り違えると、要素全体がborder分だけ膨らみます。

/* width に border・padding を含める。ズレ防止の基本 */
* { box-sizing: border-box; }
ズレたまま納品した場合と1pxまで詰めた納品を比較した表

なぜ1pxを詰めるのか

1pxは、単体では気づかれないこともあります。それでも私が潰すのは、ズレが積み重なると全体の印象が崩れ、デザイナーが意図した余白のリズムが失われるからだと感じています。

カンプに忠実であることは、デザインへの敬意でもあります。実測値をそのまま反映し、文字と画像の癖を先回りして手当てしておけば、検収での差し戻しが減り、意図した見た目に初回から近づきます。ズレを前提にしたレイアウトの組み方は、実装しやすいFigmaデータの作り方にも整理しています。

まとめ

1pxのズレは、丸め・フォントのメトリクス・行間や字間の解釈・画像の書き出し・ボックス計算といった、ブラウザの前提から生まれます。原因を知っていれば、多くは実装の段階で先回りして潰せます。

カンプ通りに仕上がらない、ピクセル単位で詰めてくれる実装者を探している。そんなときはお問い合わせからご相談ください。カンプと実装の差を、実測ベースで合わせていきます。

本記事は2026年7月時点の情報です。ブラウザやツールの挙動は更新される場合があるため、実装時は最新の環境で確認してください。