WordPressでInDesignの様な文字組−その②

グリッドが表示できるようになったので 各タグがグリッド揃えになる様に位置調整をしていきます

などの余白部分をクリックタップするとグリッド表示の on/off が可能になっておりますので お好みに応じて使い分けてください

check
  • カスタマイズは自己責任でお願いします。
  • wp-cocoon.comサイトのサポート対象外となります。
スポンサーリンク

グリッド揃えとは?

そもそもグリッド揃えとは何かをカンタンに説明します

基本的なルール

ポイント
  • 本文の文字の大きさと行間を設定します。
  • 本文よりも高さのあるモノ(タイトルや絵図)は行取ぎょうどりを行い モノの上下には行間を確保します

行取りの使用例

図表や画像 ブログカードなどの高さは その内容によりまちまちですが それを本文の高さに揃える事を行取りと言います

カラム表示ですと 表示しているデバイスによっては隣のブログカードの高さと この文章の何処どこかの行の位置がピッタリ同じになります

表示しているデバイスによっては文章の方が短いかもしれません

この様に あらゆるタグの margin padding などを調整してグリッドに揃えていきます

基本的な揃え方

基本は margin で行間を確保

シンプルなサンプルを用意します

ボックスのみの場合

.blank-box

.blank-box.sticky

この 2 つのボックスは次の scss が適用されています

 /*  白抜きボックス  */ 
 .blank-box { 
   margin-top: $line_space; 
   margin-bottom: $line_space; 
   padding-top: $line_height_px / 2 - 2px; 
   padding-bottom: $line_height_px / 2 - 2px; 
 } 

 /*  付箋風ボックス  */ 
 .blank-box.sticky { 
   margin-top: $line_space; 
   margin-bottom: $line_space; 
   padding-top: $line_height_px / 2; 
   padding-bottom: $line_height_px / 2; 
 } 

 /*  ボックス内の文字  */ 
 p { 
   line-height: $line_height_px; 
 } 

どちらのボックスも行間分のマージンを上下に取っています

そして 白抜きボックスの下マージンと付箋風ボックスの上マージンは マージンの相殺により重なります

マージンなどの付き方を着色表示してみると

ボックスのマージン

分かりやすいですね 上下の薄い肌色に比べ ボックスの間はマージンが重なって色濃く表示されています

つまり ボックスの border を含めた 大きさが行取りのサイズ line-height の整数倍に font-size を足した数 になっていれば 後は margin で行間を取るだけで済みます

そう思ってました 不穏

文字を置いてみる

では続いて 先程のボックスの間に文字を置いてみます すると

.blank-box

ボックスの間に文字を置いてみる グリッド揃えの css を適用していない状態です。)

.blank-box.sticky

こんな感じでグリッドからズレてしまいます このままでは見辛いので次の行からグリッドに戻します

ほい 戻りました こちらも画像で見てみると

ボックスのマージン
ボックスの margin padding
テキストのマージン
テキストの line-height

この様に ボックスの間に置かれた文字には line-height が効いているので ボックスのマージンは文字のつらまで届きません

つまり <p> タグなどの line-height の効果が発生するタグは 例え margin 0px にしてもグリッドに揃いません ;;

であれば line-height にすれば余分な余白が発生しないので グリッドに揃うのでは?とも考えましたが ある程度の行間を確保しないと とても読み辛い文字組になってしまいます 当然 このまま続けるワケには行かないので もっかいグリッドに戻します

ほい 戻りました ですので 読みやすい line-height を確保したまま 文字面をグリッドに揃える必要があります

line-heightへの食い込み
line-height への食い込み

そこで もう少し詳しく観察します

先程の 2 つの画像を重ねてみると ボックス内のテキストは padding 緑色の部分 line-height に食い込んでいるのが分かります

つまり ボックス間テキストの line-height にも食い込みが出来る指定をすれば ボックスのマージンはボックス間テキストのつらに届く様になります

先程 margin 0px にしても揃わないと述べました そこで margin をマイナスにします

実践的な揃え方

ネガティブマージン

margin にマイナスの値を持たせる事によって 隣接するオブジェクトを食い込ませます

 $str_inner_margin_shift: 1; 
 $str_inner_margin_top: $line_space / 2 - $str_inner_margin_shift; 
 $str_inner_margin_bottom: $line_space / 2 + $str_inner_margin_shift; 

 @mixin p-margin() { 
   margin-top: - $str_inner_margin_top; 
   margin-bottom: - $str_inner_margin_bottom; 
 } 

 p { 
     @include p-margin(); 
 } 

行間の半分を上下のマージンに振り分けます

計算式の中で $str_inner_margin_shift なるものを足したり引いたりしていますが 上下とも同じマージンですと どうにも文字がズレて見えます

これがブラウザ解釈の問題なのか フォントのアセンダディセンダベースライン周りの問題なのかは分かりません ;;

ともあれ 上下で別個のネガティブマージンを適用します せめてこれが同値でイケたらこの先もっと楽になったのですが、、、

上記のスタイル設定を適用した状態で 先程のボックスを表示するとこんな感じです

.blank-box

ボックスの間に文字を置いてみる グリッド揃えの css を適用済み。)

.blank-box.sticky

うん ステキです

まとめ

この様に グリッドに揃えていくのは結構な手間が掛かりそうです line-height の影響を受けるタグって思いつくだけでも <p> <ol> <ul> <li> <dl> <dt> <dd> とかありますしね

しかも これらの組み合わせ処理も必要になります 今回の <p> タグ処理のままでは連続する <p> タグのマージンはゼロになってしまいます

まぁ 気長にコツコツやっていく必要がありそうですね

コメント