以前 「YUI Fonts CSS でフォントサイズを相対指定する」 という記事を2008年に書いたんだけど、
6年後(!!)の現在はremで指定しているのでそれについてメモっておく。
rem(root + em = rem)というのは単位のことで、ルート(=html)を基準に相対指定ができる。
YUI Fonts CSSなどのemや%を用いる相対指定との最大の違いは、指定が入れ子になっても親のサイズに影響を受けないという所で、それが最大のメリットでもある。
対応状況は、モダンブラウザならほぼおkという感じだけど一部注意が必要。
- IE9&10はfontショートハンドおよび疑似要素で未対応
- IE9&10&11は疑似要素のline-heightで未対応
- Chromeはborder-sizeでremを使用すると拡大したときに線が消える
プリプロセッサを常用してるので、remの設定部分もほぼ使い回してます。
以下はその設定部分の抜粋です。
Sass
$default-root-font-size : 62.5% !default; // rootの文字サイズ
$default-font-size-base : 1.4rem !default; // ベースの文字サイズ(13px相当)
$default-font-size-xxl : ($default-font-size-base + 0.4) !default; // xx-large
$default-font-size-xl : ($default-font-size-base + 0.2) !default; // x-large
$default-font-size-l : ($default-font-size-base + 0.1) !default; // large
$default-font-size-s : ($default-font-size-base - 0.1) !default; // small
$default-font-size-xs : ($default-font-size-base - 0.2) !default; // x-small
$default-font-size-xxs : ($default-font-size-base - 0.4) !default; // xx-small
html {
font-size: $default-root-font-size;
}
body {
font-size: $default-font-size-base;
}
p {
font-size: $default-font-size-s;
}
.fs--xxl {
font-size: $default-font-size-xxl;
}
.fs--xl {
font-size: $default-font-size-xl;
}
.fs--l {
font-size: $default-font-size-l;
}
.fs--m {
font-size: $default-font-size-base;
}
.fs--s {
font-size: $default-font-size-s;
}
.fs--xs {
font-size: $default-font-size-xs;
}
.fs--xxs {
font-size: $default-font-size-xxs;
}
See the Pen [sass] rem font setting by Tenderfeel (@Tenderfeel) on CodePen.
Styls
StylusでSassのような計算式を書くとJavaScriptの小数点計算の悪癖がそのまま出ることがあるんで、ceilやroundで丸めといた方が良い。
$default-root-font-size = 62.5% // rootの文字サイズ
$default-font-size-base = 1.4rem // ベースの文字サイズ(13px相当)
$default-font-size-xxl = ceil($default-font-size-base + 0.4, 1) // xx-large
$default-font-size-xl = ceil($default-font-size-base + 0.2, 1) // x-large
$default-font-size-l = round($default-font-size-base + 0.1, 1) // large
$default-font-size-s = ceil($default-font-size-base - 0.1, 1) // small
$default-font-size-xs = ceil($default-font-size-base - 0.2, 1) // x-
$default-font-size-xxs = ceil($default-font-size-base - 0.4, 1) // xx-small
html
font-size $osl-default-root-font-size
body
font-size $osl-default-font-size-base
p
font-size $default-font-size-s
.fs--xxl
font-size $default-font-size-xxl
.fs--xl
font-size $default-font-size-xl
.fs--l
font-size $default-font-size-l
.fs--m
font-size $default-font-size-base
.fs--s
font-size $default-font-size-s
.fs--xs
font-size $default-font-size-xs
.fs--xxs
font-size $default-font-size-xxs
See the Pen [stylus] rem font setting by Tenderfeel (@Tenderfeel) on CodePen.