Web

Vertical Rhythmの使い方 [compass]

Vertical rhythmのイメージ横方向のレイアウト整合性をとるのがBlueprintなら、縦方向(行間)をコントロールするのがVertical Rhythmです。Blueprintにも行間コントロールの機能はあるのですがあまり使いやすいとは言えません。ここではcompassコアに含まれるVertical Rhythmの使い方を説明します。
Web

基本となる行間の設定と初期化

Vertical Rhythmの初期化コードは図のようになります。

 

@import “compass/typography”; // Vertical Rhythmを含むtypographyをインポート
$base-font-size: 14px;  // 基本のフォントサイズを指定
$base-line-height: 24px; // 基本の行間を指定
@include establish-baseline; // Vertical Rhythmを初期化
  • 1行目はcompassコアに含まれるパーシャル「typography」をインポート
  • 2~3行目はtypography内で定義されている変数を設定。特に設定しなければデフォルト値が使用されます。
  • 4行目でミックスイン「establish-baseline」を呼び出す。<html>要素に対してfont-sizeやline-heightが設定されます。

「基本のフォントサイズ」には本文フォントのサイズを指定すればよいでしょう。
「基本の行間」も同様です。エディトリアルデザインでよく使われる比率としては「フォントの1.5倍= 21px」「フォントの1.75倍=24px」などがあります。
これらを指定した上でestablish-baselineをインクルードすれば必要な初期設定が行われます。

文字の大きさと行間の設定

h2 {
  @include adjust-font-size-to(36px);
}

タイトルなどに大きなフォントサイズを設定するには、図のようにadjust-font-size-to($font-size) をインクルードします。

フォントサイズが36pxになると同時に、line-heightも$base-line-heighの倍数になるように調整されます。

上下の行間を空ける設定

h2 {
  @include leader(1); // 上を1行分あける
  @inlude trailer(1); // 下を1行分あける
}

タイトルの上下にマージンを空けたいときは、図のよう leader($line) (上を空ける)や trailer($line)(下を空ける) をインクルードします。

h2 {
  @include leader(0.5);
  @include trailer(0.5);
}
また図のように小数を設定することも有効です。
上下に0.5行分のマージンが空けられます。h2の途中では基本グリッドから外れますが、h2が終われば基本グリッドにもどります。

表の上下マージンを設定する

table {
  @include leader(0.5);
  @include trailer(0.5);
}
表の上下に0.5行分のマージンを空けることを考えてみましょう。
図のようにすれば一見問題ないように思えますが、表には上下のボーダーがつきます。border-width: 1pxだとすると、このままでは上下に2pxずれてしまうことになります。
table {
  margin-top: rhythm($lines: 0.5, $offset: 1px);
  margin-bottom: rhythm($lines: 0.5, $offset: 1px);
  border: solid 1px blue;
}
このような細かい計算をするためにrhythm関数を使うことができます。rhythm()は行数$linesとオフセット$offsetを渡すことで、基本ライン髙に基づいたライン髙を計算してくれます。
図のようにすることでborder-widthを考慮に入れたmarginが設定されます。(テーブルの中にもボーダーがあるのならば、<td>などのline-heightも同じようにして計算をしてください。)

ミックスインや関数に引数を渡すにはいくつかの方法があります。

@function rhythm($lines: 1, $font-size: $base-font-size, $offset:0) と定義されているとき、

  • rhythm(1, 16px); は$linesに1、$font-sizeに16pxが渡されます。$offsetはデフォルト値の0となります。
  • rhythm($offset: 1px, $lines: 2); は$linesに2、$offsetに1pxが渡されます。$font-sizeはデフォルト値に$base-font-sizeとなります。

その他のエントリー