Press shift question mark to access a list of keyboard shortcuts
Этот скринкаст является частью нашей серии CSS AtoZ. Вы можете найти другие записи серии здесь .
расшифровка
Свойство CSS line-height
действует подобно лидеру в дизайне печати.
Это позволяет нам контролировать расстояние между строками в абзацах, заголовках и других текстовых элементах.
line-height
также может быть использована в качестве основы для создания последовательного вертикального ритма и интервала на протяжении всего проекта.
В этом эпизоде мы рассмотрим:
- разница между
line-height
и ведущей - используя
line-height
для вертикального выравнивания и - используя значение
line-height
чтобы установить интервал по умолчанию для всего сайта.
line-height
против ведущих
Ведущий — это набор текста, который описывает расстояние между базовыми линиями в тексте. Термин происходит от дней ручного набора текста, когда полоски свинца использовались для разметки блока типа. Говоря о ведении, пробел всегда добавляется ниже линии.
line-height
— это свойство CSS, которое контролирует высоту строки, в которой интервал равен над и под текстом.
Если у меня есть абзац с 16px
font-size
1em
или 16px
и line-height
24px
, то над текстом 4px
добавлено 4px
и 4px
ниже; высота линии будет
4 + 16 + 4 = 24px
Это главное различие между line-height
и лидирующей. В CSS текст вертикально центрируется внутри строки, а при печати пространство под строкой добавляется.
Вертикальное центрирование
Мы можем использовать это знание line-height
чтобы создать грубую форму вертикального центрирования — то, что обычно довольно сложно сделать в CSS.
Давайте посмотрим на пример.
Я хочу создать эффект прокрутки изображения и отобразить полупрозрачный заголовок с вертикально центрированным текстом поверх изображения.
Я создам container
и добавлю в 400x400
изображение размером 400x400
. Теперь я добавлю заголовок внутри с текстом. Этот оверлейный заголовок будет помещен поверх изображения с position:absolute
а затем получит полупрозрачный фон. Поскольку я знаю высоту изображения и контейнера изображения, я могу использовать line-height
для вертикального центрирования текста внутри блока.
У этого метода есть один маленький недостаток: если текст слишком длинный и переносится на несколько строк, высота каждой из этих строк составит 400px
и текст будет переполнен.
Для альтернативного подхода к вертикальному выравниванию, обратите внимание на «Эпизод 22: Вертикальное выравнивание в CSS» .
Проект Wide Spacing
Мы видели, как line-height
может контролировать расстояние между строками текста в абзаце. Мне нравится тщательно выбирать это значение и использовать его в качестве основы для большей части пространства на сайте.
Я часто устанавливаю font-size
умолчанию и line-height
в body
которое затем будет каскадно проходить через все мои текстовые элементы. line-height
может быть указана в пикселях, ems, rems, процентах или может быть оставлена без единиц измерения. С помощью безлинной line-height
, которая является моим предпочтением, все элементы получают вертикальный интервал их размера шрифта, умноженного на мой «фактор расстояния». Я часто использую 1,5 в качестве моего фактора, но так как он преимущественно установлен в одном месте, его легко изменить.
body { font-size: 16px; line-height: 1.5; }
Если мой font-size
умолчанию равен 16px
тогда все абзацы будут иметь line-height
:
1.5 * 16 = 24px
Если мой font-size
h1
умолчанию равен 2em
то он будет иметь эквивалентный размер шрифта 48px
и эквивалентную line-height
48px
16 * 2 = 32px 32 * 1.5 = 48px
Я бы продолжил использовать этот коэффициент 1,5 на всем остальном сайте. Я бы добавил поле 1.5em
под заголовками, абзацами, списком, элементами списка и входными данными формы. Если бы я хотел большего пространства между элементами, я бы 1.5em
свои 1.5em
до 3em
. Если бы я хотел меньше места — возможно, для заполнения кнопок или ввода формы, я мог бы 0.75em
его вдвое до 0.75em
или на четверть до 0.375em
. Цель игры состоит в том, чтобы поддерживать постоянный фактор.
При таком согласованном интервале, если бы я теперь изменил размер шрифта по умолчанию в body
, относительный интервал внутри и вокруг каждого элемента также оставался бы неизменным.
Разработка этого множителя интервалов, вероятно, является одной из самых важных вещей, которые нужно сделать в начале нового проекта. Если какие-то конкретные элементы необходимо отдалить от «магического фактора», это вполне выполнимо, но я думаю, что всегда разумно установить хорошую прочную основу, а затем опираться на нее, вместо того, чтобы каждый раз набирать все на глаз, когда есть риск того, что вещи не выстроятся в линию или будут несовместимы со страницы на страницу.
Быстрая подсказка
Теперь, в этом кратком совете по бонусам, мы рассмотрим сокращение для настройки font-size
и line-height
вместе, чтобы сэкономить пару дополнительных нажатий клавиш.
line-height
, как обсуждалось в оригинальном скринкасте , является свойством для установки высоты линии в CSS. Это похоже (но немного отличается) от лидирующего в дизайне печати.
Совет 1
line-height
применяется только к элементам, для которых их display
установлено как inline
или inline-block
и фактически устанавливает высоту линейного блока, который ограничивает элемент. Если вы установите line-height
для блочного элемента, вы все равно можете увидеть некоторые изменения в ваших стилях, но на самом деле это затрагивает inline
дочерние элементы, так как line-height
является унаследованным свойством.
При установке line-height
без единицы измерения (как я рекомендую в видео), вычисленное значение представляет собой line-height
умноженную на font-size
текущего элемента.
{ font-size: 20px; font-family: 'Avenir', sans-serif; line-height: 1.5; /* 30px */ }
Совет 2
Если вам нужно установить одновременно line-height
и font-size
, есть удобное сокращение с помощью свойства font
.
Этот сокращенный font-variant
позволяет установить font-style
font-variant
, font-variant
, font-weight
, font-size
, line-height
и font-family
в одной строке.
Фрагмент из вышеприведенной подсказки можно объединить в одну стенограмму font
следующим образом:
{ font: 20px/1.5 'Avenir', sans-serif; }
При использовании этого сокращенного синтаксиса важен порядок объявления.
- Семейство
font-family
должно быть последним объявлением - Высота
line-height
должна следовать сразу заfont-size
и быть разделена косой чертой/
-
font-style
,font-variant
иfont-weight
должны быть определены доfont-size
иline-height
.
Полный пример использования всех доступных свойств шрифта может выглядеть следующим образом:
{ /* style | variant | weight | size/line-height | family */ font: italic small-caps 700 20px/1.5 'Avenir', sans-serif; }