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; }