≪ Today I learned. RSS購読
公開日
タグ
CSS
著者
ダーシノ

ユーザー設定フォントサイズと許容サイズの課題と解決

ページ全体のフォントサイズを設定する際、ブラウザのデフォルト値(16px)を使うのが一般的だ。

html {
  /* ブラウザのデフォルト値を使う */
  font-size: 1rem;
}

しかし、ブラウザのユーザー設定フォントサイズは9〜24pxと幅広く、推奨値以外を設定した場合、デザインが崩れたり、ユーザー体験が損なわれたりする可能性がある。

例:Chromeのフォントサイズ

ユーザー設定フォントサイズの解決案

1. 上限/下限のガードレールを設定する

許容できるfont-sizeの大きさをもとに、clamp()を使ってユーザー設定のフォントサイズを制限することでデザインの崩れを防ぐ。

html {
  /* フォントサイズ上限 */
  --MAX: 20px;
  /* フォントサイズ下限 */
  --MIN: 12px;

  font-size: clamp(var(--MIN), 1em, var(--MAX));
}

2. 加重平均でデフォルトとユーザー設定のバランスをとる

デザイナー・開発者が想定するデフォルトのフォントサイズと、ユーザー設定のフォントサイズを加重平均を使ってバランスをとる。ユーザー設定がそのまま反映されないが、フォントサイズを大きく(または小さく)したいという意図を尊重できる。

html {
  /* ページのフォントサイズの重み */
  --WEIGHT-SITE: 0.6;
  /* ユーザー設定の重み */
  --WEIGHT-USER: 0.4;
  --DEFAULT-FONT-SIZE: 16px;

  font-size: calc(
    var(--WEIGHT-SITE) * var(--DEFAULT-FONT-SIZE) +
    var(--WEIGHT-USER) * 1em
  );
}

デモ

フォントサイズ上限:20px、下限:12px

フォントサイズの重み:サイト60%、ユーザー40%

参考