spanにline-heightが効かない!そんなときの対処法

spanにline-heightが効かない!

CSSを書いていて、

「span に line-height を指定したのに、思ったように行間が詰まらない……」

ということはありませんか?

特に、p タグの中に小さい文字を入れて、その部分だけ文字サイズや行間を変更したいときに、この問題に遭遇することがあります。

今回は、span の line-height が思ったように効かないときの原因と対処法を紹介します。

span にline-heightを指定したのに効かない?

例えば、次のようなHTMLがあるとします。

<p>
  <span>小さい文字<br />小さい文字</span><br />通常の文字
</p>

通常の文字よりも小さい文字にしたいため、span に font-size と line-height を指定します。

p {
  font-size: 30px;
  line-height: 1.5;
}

span {
  font-size: 18px;
  line-height: 1;
}

ところが、実際に表示してみると、

「line-height: 1 にしたのに、思ったほど行間が詰まらない」

ということがあります。

原因はspanがインライン要素だから

span はデフォルトではインライン要素です。

span のようなインライン要素は、文章の一部として扱われます。

そのため、親要素である p の行ボックスの中に、span が含まれる形になります。

ここで、line-height: 1;を指定しても、span の行間を自由に調整できるわけではありません。

特に、親の文字サイズやline-heightとの組み合わせによって、見た目としては「line-heightが効いていない」ように見えることがあります。

そんなときはdisplay: inline-block;

そこで、span に display: inline-block; を指定してみましょう。

span {
  display: inline-block;
  font-size: 18px;
  line-height: 1;
}

これだけで、line-heightが効くようになります。

まとめ

span はデフォルトではインライン要素なので、line-height を指定しても、親要素との組み合わせによって「思ったように行間が詰まらない」と感じることがあります。

そんなときは、まず

span {
  display: inline-block;
  line-height: 1;
}

を試してみましょう。

おとうふ

田舎で働くWebエンジニア

毎日少しずつ成長中🌱
仕事・学習・暮らしの中で、自分が実際に経験したことを発信