ホームページ作成/テキストの配置・装飾 (HTML,CSS)

行間(行の高さ)を調節するなら単位はナシで(2ページ目)

長文を読みやすくするには行間を広めに設定する方が望ましいでしょう。その行間(行の高さ)の指定を、単位付きの数値で記述していませんか? 単位を付けて指定すると、上下の行と重なってしまうことがあります。

西村 文宏

執筆者:西村 文宏

ホームページ作成ガイド

単位の有無で表示が変わる理由

line-heightプロパティの値を「1.4」にした場合と「1.4em」にした場合とで表示結果が異なるのは、 単位の有無によって、継承方法が異なるからです。

例えば、以下のようなHTMLを考えます。段落を作るp要素の中に、強調を表現するstrong要素が含まれています。

<p>段落内の<strong>強調文字</strong>です。</p>

■文字色の場合は…
p要素(段落)の文字色を「赤色」にした場合、段落の中に含まれるstrong要素(強調)の文字色も「赤色」になりますね。 これは、p要素に指定した「赤色」が、内側にあるstrong要素にも継承されるからです。
※正確には、「p要素のcolorプロパティの値がstrong要素のcolorプロパティに継承される」。

■行の高さでも同様
それと同じように、line-heightプロパティを使って段落の「行の高さ」を指定すれば、段落の中に含まれる強調文字の「行の高さ」にも同じ値が継承されます。
ところが、この「同じ値」の解釈が、「単位あり」と「単位なし」では異なるのです。

その結果、「単位あり」で指定した場合のみ、大きな文字が現れた際に、上下の行と重なってしまうことになります。

「単位あり」だと重なってしまう理由

以下のように、line-heightプロパティの値に単位を付けて記述すると、大きな文字が上下の行に重なってしまいます。

p {
   line-height: 1.4em;
}

例えば、p要素(段落)の文字サイズが20ピクセルだとすると、上記のスタイルを適用した結果、行の高さは28ピクセルになります。 (※[20ピクセル]×[1.4文字分]=[28ピクセル])

ここで、strong要素(強調文字)の文字サイズを以下のように「30ピクセル」に指定したとします。

p strong {
   font-size: 30px;
}

しかし、strong要素に対する「行の高さ」は、p要素の「行の高さ」である「28ピクセル」を継承しているので…


行の高さが28pxなのに文字の高さは30px

…になってしまいます。
これが、文字が上下の行に重なってしまう理由です。
※行の上下両方で表示位置が調節され、上の行だけでなく下の行にも重なる可能性があります。(ブラウザによって異なります。)

「1.4em(=1.4文字分)」という指定が継承されるのではなく、「28ピクセル」という計算結果が継承されるため、このようになります。

ところが、単位を付けずに「1.4」とだけ指定した場合には、このようにはなりません。

単位を付けなければ、うまくいく理由は…? >>

  • 前のページへ
  • 1
  • 2
  • 3
  • 4
  • 次のページへ

あわせて読みたい

あなたにオススメ

    表示について

    カテゴリー一覧

    All Aboutサービス・メディア

    All About公式SNS
    日々の生活や仕事を楽しむための情報を毎日お届けします。
    公式SNS一覧
    © All About, Inc. All rights reserved. 掲載の記事・写真・イラストなど、すべてのコンテンツの無断複写・転載・公衆送信等を禁じます