文字サイズ
少し前まで大きめの文字を使っていたが、ブラウザ規定の文字サイズをそのまま 1rem
として以下の倍率で5種類のサイズを定義して使っている。
|
|
カーニング
日本語ベタ組みメインなので、 body
レベルでカーニングやプロポーショナルメトリクスを無効にしている。
|
|
一方で、見出しとかは詰め組したいので .u-kerning
というユーティリティクラスを用意している。
|
|
コンテナ幅
日本語ベタ組みの場合、幅は 1rem
の自然数倍がよい。ということでコンテナの幅は 42rem
としている。これは 1rem
が 16px としたときに 672px となるのだが、本文の幅は 600-700px くらいが読みやすいと言われているようなので、その範囲で好みで調節している。
ただ、レスポンシブのために max-width: 42rem
となっているので、それより小さい画面幅では実際は 1rem
の自然数倍でなくなる場合がある。こうなると左右の余白のバランスが悪くなったり、行末が揃いにくくなったりする。
この対策として display: grid
を使用して、 1rem
のグリッドを中央寄せで画面幅いっぱいまで繰り返すようにしている。
|
|
なお、この場合左右の余白が実際に何ピクセルで描画されているか判定が難しい。
画像やコードブロックは左右の余白なしで、本文より少し幅広になっているのが好きで、ここは拘りたいと思っている。左右にネガティブマージンを入れることで実現できるのだが、 grid で中央寄せするとそれができない。(ネガティブマージンとして何ピクセル広げればよいか分からないので)
ということで少し工夫して画面幅いっぱいを実現している。
|
|
コンテナ幅とは関係ないが、縦を揃えるという意味でもうひとつ。箇条書きの左余白を 1rem
の自然数倍としている。
|
|
Vertical Rhythm
縦方向にリズムを作りましょう、そのリズムを繰り返しましょうというのが vertical rhythm と呼ばれるものである。
具体的には縦方向の余白を1行の自然数倍にしてあげると良い、とされている。1行の高さを $vr-unit
として、それを使いまわしている。
|
|
禁則処理
前述の通りこのサイトでは現在1行最大で42文字、画面幅がそれ未満の場合は幅いっぱいに表示しているので、変なところで改行されてしまうことのデメリットが行末が揃わないことのデメリットより大きいと判断し、できるだけ厳しい line-break: strict
を指定している。
1行あたりの文字数が少ない場合は割とゆるいほうが良い(行末がズレにくいほうがブロックとして視認性が高い)ので、このあたりはケースバイケースだと思う。
|
|