17 ポイント 投稿者 GN⁺ 2024-04-18 | 3件のコメント | WhatsAppで共有
  • 多くの企業のアプリケーションでは、テキストやアイコンなどのUI要素がきちんと中央揃えされていない
  • CSS の flex と grid を使えば簡単に中央揃えできるにもかかわらず
display: flex  
justify-content: center /* 水平センタリング */  
align-items: center /* 垂直センタリング */  

または

display: grid  
justify-items: center /* 水平センタリング */  
align-items: center /* 垂直センタリング */  

中央揃えを難しくする要因

  • フォントのメトリクスが重要な役割を果たす。人気のあるフォントの多くはバウンディングボックスがぴったり合っておらず余白があるため、中央揃えが難しい
  • line-height 設定の影響で、異なるコンテナ内にある2つの要素を揃えるのはほぼ不可能
  • アイコンをテキストの横に揃えるのも非常に難しい作業。CSS の vertical-align 属性ではアイコンを意味のある形で揃えられない
  • アイコンをフォントファイルに入れて使うアイコンフォントは、サイズやパディングの調整ができず、整列がさらに難しくなる
  • デザイナーも、アイコンの形状を考慮せず機械的に中央揃えしてしまうミスを犯しがち
  • 水平方向の整列も、細心の注意を払わないとずれてしまうことがある

解決策

デザイナー

  • フォントのバウンディングボックスをテキストにぴったり合わせて調整すれば、中央揃えははるかに簡単になる
  • Figma ではこの機能をサポートしている(デフォルトではない)
    • Vertical Trim : Cap Height to baseline

フォントデザイナー

  • ascender と descender の間の空間が cap-height の2倍になるようにフォントメトリクスを設定すれば、開発者は簡単に中央揃えできる
  • 実際の ascender/descender を境界まで延ばす必要はなく、数値だけ合わせればよい

Web開発者

  • 使用するフォントを事前に把握している必要がある(フォント代替時には機能しない)
  • フォントメトリクスを使って計算した padding-bottom 値を追加することで、垂直方向の中央揃えを調整できる
  • アイコンも vertical-align: baseline を設定し、フォントメトリクスとアイコンサイズから計算した値だけ下に移動させれば揃えられる

アイコンフォント

  • アイコンフォントの使用はどうかやめて、通常の画像フォーマットを使うこと
  • 幅と高さを持つ長方形2つを揃えるより簡単なことはない

視覚的補正

  • 開発者が揃えられるのは数学的に完全な長方形だけ。手動補正が必要なものは、アイコンを視覚的にバランスよく長方形の中に配置すること

GN⁺の意見

  • 細かなディテールへの関心によって、UI品質を大きく向上させられることを示している。ごく些細に見える中央揃えひとつでも、全体の印象は変わる
  • 単に「デザイナーはデザインだけ、開発者は実装だけ気にすればよい」という考え方ではなく、お互いの領域を理解して協力することでよい結果が生まれることを示唆している
  • そもそもブラウザごとのレンダリング差異が出ず、デザイナーの意図どおりに実装しやすくするために、デザイン段階からフォントメトリクスを合わせてモックを作るのがよさそう
  • Apple、MS、Google など名だたる企業の製品でもこうした問題が見つかるが、多くの人は気にも留めず通り過ぎるほど関心が薄いようだ。それだけ細部へのこだわりを持って作ることが重要
  • とくに最近は UI テスト自動化ツールなどの利用により、人の目で一つひとつ確認する工程が省略されることで、こうした問題はさらに頻繁に起こりうるため注意が必要に見える

3件のコメント

 
dormis 2024-04-19

機械的な中央揃えが本当に良いのかも考えてみる必要がありますね。マウスが左右対称よりも少し左右非対称なエルゴノミクス形状のほうが使いやすいように、全体的な使い勝手を見て決めるべき要素なのかもしれません。

 
jokuhus 2024-04-23

意図と異なる結果になりうる、というのが核心のように思います。たとえば、マウスクリックが画面上で矢印の先端部分ではなく、尾の部分で判定されるような状況ですね。

 
GN⁺ 2024-04-18
Hacker Newsの意見

要約:

  • CSSレイアウトには多くの問題があり、CADプログラム、ゲームエンジン、アニメーションソフトなどの2D/3Dツールのほうが、より優れたレイアウトエンジンや制約システムを備えている
  • 配置に唯一の正解はなく、デザイナーは常に不満の種を見つけるもの
    • 正確なマージン値を使っても、視覚的には非対称に見えることがある
    • 文字の形に合わせて調整しても、ベースラインやxハイトなどに合っていないと不満を言われることがある
  • フォントレンダリングはOSやブラウザによって異なるため、ある環境で完璧に揃っていても別の環境ではずれることがある
  • 非西洋圏のフォントではさらに厄介
  • 現実世界でも配置は難しい問題(NCAAバスケットボールコートの図の例)
  • 配置の基準は見る人によって異なる
  • CSSの justifyalign を対話的に試せるデモサイトの紹介
  • テキストの横にアイコンを配置する際、フォントだけでなくテキスト自体の「活字上の中心」に合わせるべきだというデザイナーの助言があったが、実際には妥協が必要だった
  • CSSがテーブルの機能に追いついたという主張は10年以上前からあるが、いまだに完全ではない