sand0wjgjeo2
@sand0wjgjeo2

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

spanタグで上下の謎の空白が生じて、font-sizeと高さが合わないのはなぜですか?

質問背景と問題点

spanタグのようなinline要素だと、line-heightの値に関わらずfont-size以上の高さが出てしまいます。
inline-blockに変更すると、高さはfont-sizeと一致します(添付画像)。

Frame 1.png

プロパティ情報

フォント:Noto Sans JP
font-size: 16px
line-height: 16px

質問内容

そこで以下をお伺いしたいです。

  • なぜspanタグの場合、余分な領域が発生するのか?
  • font-sizeと同じ高さにするためのベストな方法
    • 私の中ではinline-blockやblock要素に変更するなどが候補としてあります。
0

5Answer

調査経過報告:

以下、stackoverflowで同じような質問があったが、これはinline-blockを用いて対応している。

以下に参考になる回答があった。
私がここで削除したい余分な高さは、本来文字が持つ高さであり、それは一般的にfont-sizeの1.2倍である(フォントによって異なる)。

The browser is not adding any padding. Instead, letters (even uppercase letters) are generally considerably smaller in the vertical direction than the height of the font, not to mention the line height, which is typically by default about 1.2 times the font height (font size).
There is no general solution to this because fonts are different. Even for fixed font size, the height of a letter varies by font. And uppercase letters need not have the same height in a font.
Practical solutions can be found by experimentation, but they are unavoidably font-dependent. You will need to set the line height essentially smaller than the font size. The following seems to yield the desired result in different browsers on Windows, for the Arial font:

私が質問した例にあるNoto Sans JPは、30pxを指定した際は高さが44px、10pxの場合は15pxなので、約1.5倍の高さを占領する様子。

0Like

なぜspanタグの場合、余分な領域が発生するのか?

おっしゃる通り、本来文字が持つ高さになります。

アクセシビリティを考慮するとline-hightは1.5が好ましいそうです。

font-sizeと同じ高さにするためのベストな方法

これがやりたいこととあっているかわかりませんが、
display 以外でやるとしたら、 line-heightを 1 or 100%と指定する方法でも
フォントサイズと同じ高さにできると思います。

.style {
  line-height: 1;
}

or

.style {
  line-height: 100%;
}
0Like

Comments

  1. @sand0wjgjeo2

    Questioner

    回答ありがとうございます!!

    line-heightを1 or 100%指定にする方法に関してですが、inline要素だと作用しませんでした(inline-blockにするとline-heightは作用しました)。
    別の投稿に画像添付しております。


cssハックが必要な部分として昔話題になった内容です。
親要素をfont-size:0;にしてみてください
使用する箇所によっていろいろな問題点もあるようですが、レイアウト的に若干の調整が必要な時は今でも使ってます

0Like

Your answer might help someone💌