В спецификации CSS указано, что высоту строки следует применять к тексту, разделив указанное значение на два и применив результат выше и ниже строки текста.
Это значительно отличается от традиционного понимания ведения, которое обычно означает, что интервал «добавляется» только над строкой текста. (Я знаю, что это не на 100% правильно, потому что на самом деле высота строки не добавляет пробела, а задает высоту строки; однако, так проще описать проблему).
Рассмотрим пример разметки:
<!DOCTYPE html>
<html>
<head>
<style type="text/css">
p
{
margin:0;
font-size: 13pt;
line-height: 15pt;
}
h1
{
margin:0;
font-size: 21pt;
line-height: 30pt;
}
</style>
</head>
<body>
<h1>Title</h1>
<p>Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s.</p>
<p>Many desktop publishing packages and web page editors now use Lorem Ipsum as their default model text, and a search for 'lorem ipsum' will uncover many web sites still in their infancy. Various versions have evolved over the years, sometimes by accident, sometimes on purpose (injected humour and the like).</p>
<p>It uses a dictionary of over 200 Latin words, combined with a handful of model sentence structures, to generate Lorem Ipsum which looks reasonable. The generated Lorem Ipsum is therefore always free from repetition, injected humour, or non-characteristic words etc.</p>
</body>
</html>
Если бы высота строки была равна традиционному пониманию ведущего, то расстояние между <h1>
и первым <p>
будет равно расстоянию между <p>
, потому что это расстояние определяется ведущим. Однако, это не так.
Хотя расстояние между <p>
с остается неизменным (p's line-height - p's font-size = 15 - 13 = 2pt
), расстояние между <h1>
и первым <p>
отличается: оно равно (p's line-height - p's font-size)/2 + (h1's line-height - h1's font-size)/2 = (15 - 13)/2 + (30-21)/2 = 5.5pt
.
Это можно легко заметить невооруженным глазом, если указанная разметка обрабатывается браузером.
Проблема заключается в том, что традиционный способ поддержания вертикального визуального ритма на странице заключается в установке начальных элементов в кратных базовых ведущих. Этот метод неприменим в CSS, как показано выше.
У меня есть 3 вопроса:
- Правильно ли я понимаю высоту линии, ведение и их различия?
- Есть ли способ поддерживать вертикальный ритм с помощью CSS (имитируя традиционное ведение с помощью CSS или нет)?
- (Бонусный вопрос) В чем причина того, что высота линии так сильно отличается от высоты?
ОБНОВЛЕНИЕ: Большое спасибо за ваш вклад! Обратите внимание, что я предложил свое собственное решение, и я был бы очень благодарен за любые комментарии к нему: https://stackoverflow.com/a/8335230/710356