Неизведанные глубины CSS: метрики шрифта, line-height и vertical-align
Перевод статьи Deep dive CSS: font metrics, line-height and vertical-align с сайта iamvdo.me, опубликовано на css-live.ru с разрешения автора — Венсана де Оливейры.
Line-height
и vertical-align
— простые CSS-свойства. Настолько простые, что большинство из нас уверены, что понимают, как они работают и как ими пользоваться. Но это не так. На деле они сложны, может быть, сложнее всех, потому что у них ведущая роль в создании одной из самых малоизвестных особенностей CSS: строчного (инлайнового) контекста форматирования.
Например, line-height
можно задать в виде длины или безразмерного значения 1, но по умолчанию у него значение normal
— «нормально». Прекрасно, но что значит «нормально»? Часто пишут, что это (по крайней мере, должно быть) 1, или где-то 1.2, даже CSS-спецификация не дает точного ответа. Мы знаем, что безразмерное line-height
считается относительно font-size
, но загвоздка в том, что font-size: 100px
ведет себя по-разному для разных гарнитур, так будет ли line-height
всегда одинаковым или разным? Действительно ли оно от 1 до 1.2? А vertical-align
, как line-height
влияет на него?
Давайте углубимся в не самый простой CSS-механизм…