Почему заголовок имеет большую высоту, если для него задана высота строки, а у него есть диапазон с меньшим шрифтом?

Вот мой код:

div {
  border: thin solid gray;
  display: inline-block;
}
h1 {
  background: lightblue;
}
span {
  background: orange;
}
.b h1 {
  line-height: 1.2em;
}
.c span {
  font-size: 0.5em;
}
.d h1 {
  line-height: 1.2em;
}
.d span {
  font-size: 0.5em;
}
<div class="a"><h1>Foo<span>Bar</span></h2></div>
<div class="b"><h1>Foo<span>Bar</span></h2></div>
<div class="c"><h1>Foo<span>Bar</span></h2></div>
<div class="d"><h1>Foo<span>Bar</span></h2></div>

Есть четыре div. Каждый div имеет h1 и span, вложенные в h1. К этому вопросу относятся только стили line-height и font-size. Другие стили предназначены только для визуализации проблемы. Вот на что обратить внимание,

  1. div.a — обычный div. Здесь нет стиля line-height или font-size.
  2. div.b только стили h1 имеют line-height: 1.2.
  3. div.c только стили span имеют font-size: small.
  4. div.d меняет стиль h1 на line-height: 1.2 и span на font-size: small.

Почему заголовок в div.d имеет большую высоту, чем остальные?


person Lone Learner    schedule 31.12.2020    source источник
comment
хитрость в том, что в последнем примере span унаследует высоту строки, и история начнется там (читайте дубликат для полной истории)   -  person Temani Afif    schedule 31.12.2020
comment
@TemaniAfif Я знаю, что span унаследует line-height, но это справедливо и для div.c. По умолчанию line-height вместо h1 в браузере равно 1.2, поэтому даже в div.c span наследует line-height от 1.2 и, таким образом, становится эквивалентным div.d. Почему тогда div.c не имеет большей высоты, чем div.d?   -  person Lone Learner    schedule 31.12.2020
comment
1.2 и 1.2em не совпадают, объяснено здесь: stackoverflow.com/a/60109105/8620333 (вопрос объясняется с помощью проценты, но они ведут себя как проценты)   -  person Temani Afif    schedule 31.12.2020
comment
@TemaniAfif В этом была проблема! Я знал о дублирующейся ссылке, но совершенно упустил из виду, что использовал 1.2em, когда на самом деле намеревался 1.2. Зная это, проблема решена сейчас. Спасибо за помощь!   -  person Lone Learner    schedule 31.12.2020