Межстрочный интервал line-height | CSS

Высота строки CSS

line-height: normal | <number> | <length> | <проценты> | inherit | initial | unset

normalРасстояние между строчками вычисляется браузером самостоятельно
<number>Число от 0.
line-height: 1.5; = font-size * 1.5 = 20px * 1.5 = line-height: 30px; [если font-size: 20px;]
Текст легче читать, при значении от 1.5 до 2 [w3.org].
<length>Любые единицы измерения: px, em, rem, sm.
<проценты>% от em
initialТо же, что normal
inheritНаследуется значение родителей
unsetНаследуется значение родителей
Изменить line-height:
Когда в товарищах согласья нет,
На лад их дело не пойдет,
И выйдет из него не дело, только мука.
Однажды Лебедь, Рак да Щука
Везти с поклажей воз взялись
И вместе трое все в него впряглись;
Из кожи лезут вон, а возу все нет ходу!
Поклажа бы для них казалась и легка:
Да Лебедь рвется в облака,
Рак пятится назад, а Щука тянет в воду.
Кто виноват из них, кто прав - судить не нам;
Да только воз и ныне там.
<style>
#nol {
  font-size: 11px;
  line-height: 13px;
  padding: 10px; 
  border: 5px solid #456; 
}
</style>

<div id="nol"></div>

height = количество_строк * line-height
height = 12 * 13px = 156px

Чем отличается line-height от height или padding

padding - это отступ от height до границы элемента.

height: auto; (по умолчанию) — это

  1. height: 0;
  2. если присутствует текст, то сумма line-height всех строк [см. пример выше с расчётами]
  3. если есть дочерние элементы, то сумма их height, border, padding и margin
Изменить line-height:
Изменить height:
Когда в товарищах согласья нет,
На лад их дело не пойдет,
И выйдет из него не дело, только мука.
Однажды Лебедь, Рак да Щука
Везти с поклажей воз взялись
И вместе трое все в него впряглись;
Из кожи лезут вон, а возу все нет ходу!
Поклажа бы для них казалась и легка:
Да Лебедь рвется в облака,
Рак пятится назад, а Щука тянет в воду.
Кто виноват из них, кто прав - судить не нам;
Да только воз и ныне там.
<style>
#nol1 {
  font-size: 11px;
  height: 156px;
  line-height: 13px;
  padding: 10px; 
  border: 5px solid #456; 
}
</style>

<div id="nol1"></div>

Расстояние между строк HTML

Междустрочный интервал можно узнать, если из line-height вычесть font-size. Причём значение межстрочного расстояния делится на два. Одна половина увеличивает отступ от буквы до верхнего края, другая — до нижнего. То есть получается, что текст располагается ровно по середине блока.

Пример
Пример


<div id="one">line-height</div>
<div id="two">padding</div>

Это отличный инструмент, чтобы однострочный текст или картинку выравнивать вертикально по центру блока.

line-height наследуется от предка к потомку

Изменить line-height родителя:
Зелёный потомок
Синий потомок

<div id="raz">
  <div>Зелёный потомок</div>
  <div>Синий потомок</div>
</div>

Значение, заданное потомку, будет главнее того, что задано родителю.

Изменить line-height Зелёного потомка:
Изменить line-height Синего потомка:
Зелёный потомок
Синий потомок

<div id="dva">
  <div>Зелёный потомок</div>
  <div>Синий потомок</div>
</div>

Значение <number> единственное, которое отталкивается от значения font-size элемента, а не от его родителя.

значение line-height в
Случается нередко нам
И труд и мудрость видеть там,
Где стоит только догадаться
За дело просто взяться.

<div id="shest">
  <div>текст<br>текст</div>
  текст<br>текст
</div>

Для <number> line-height родителя: 16px * 2 = 32px
Для <number> line-height потомка: 30px * 2 = 60px

Для px line-height родителя: 32px
Для px line-height потомка: 32px

Для em line-height родителя: 16px * 2 = 32px
Для em line-height потомка: 16px * 2 = 32px

Для % line-height родителя: 16px * 200 / 100 = 32px
Для % line-height потомка: 16px * 200 / 100 = 32px

line-height и HTML тег span

Элемент с display: inline; не может иметь height. Поэтому, ежели line-height родителя меньше line-height дочернего элемента, строчный потомок увеличивает высоту строки предка, на которой он находится. Между line-height нескольких строчных элементов, находящихся на одной строке, также выбирается то, что больше.

Изменить line-height родителя:
Изменить line-height строчного потомка:
span

<div id="tri">
  <span>span</span>
</div>
'line-height' specifies the minimal height of line boxes within the element. The minimum height consists of a minimum height above the baseline and a minimum depth below it ... The height and depth of the font above and below the baseline are assumed to be metrics that are contained in the font. [w3.org]

Иными словами, если font-size строчного элемента отличается от font-size блочного, то первый может увеличить высоту строки родителя, на которой он находится.

Изменить line-height:
Изменить font-size:
span

<div id="chetyre">
  <span>span</span>
</div>

Откуда взялся вертикальный отступ у картинки? Как убрать межстрочный интервал?

У блочного элемента нет высоты строки.

display: block;
16*16

<div id="pyat">
  <img alt="16*16" src="http://2.bp.blogspot.com/-KpOxK0BzM-w/U0ZIUo4PF7I/AAAAAAAAEUI/PO4MiuWxy1o/s320/16.png" />
</div>

Практическое использование: Как убрать отступ под картинкой.

line-height меняется вместе с шириной окна браузера

  1. Flexible typography with CSS locks [typekit.com]
в f t
наверх ↑

10 комментариев:

Ivan
Расстояние между строк важное дело. Оптимальное расстояние улучшает читабельность.
Анонимный
Круто сделано! дочитал все до конца.
Удачи афтар!
NMitra
Удачи :)
Анонимный
молодец - долго рыл инет -один нормально описал а не как остальные друг у друга переписывают не понимая значения
NMitra
Благодарю за отзыв! Тут без примеров никак.
Анонимный
Статья 10/10. Желаю удачи и побольше такого материала!
NMitra
Буду стараться :)
Анонимный
Спасибо за такую проработанную статью. Посмотрел еще материалы вашего блога - это просто золото. Подписываюсь на ваши обновления прямо сейчас. Создавайте больше подобного материала!
NMitra
Рада видеть среди читателей и комментаторов!
Анонимный
Спасибочки! Очень полезная инфо.