Это не проблема сетки, изгиба или отступа / отступа.Это line-height
проблема.
В частности, проблема line-height: 1.6rem
установлена на элементе body
.
line-height
*Свойство 1012 * устанавливает минимальную высоту линейных блоков, в которых существуют встроенные элементы, такие как текст.
Типичное значение по умолчанию в большинстве браузеров составляет 1,2 ( MDN ) - обратите внимание на значение без единиц измерения;подробнее об этом позже .
Кроме того, свойство line-height
является наследуемым ( MDN ), что означает, что элементы в структуре HTML принимают значение, которое вы установили вышеup.
Поскольку вы не определили значение line-height
нигде ниже элемента body
, этот параметр применяется ко всему документу.
Итак, вот проблема:
Вы установили h1
на 4rem
.
Но высота строки 1.6rem
не может соответствовать этому размеру.
(4 * 16px) > (1.6 * 16px)
Вот ваш макетв обычном режиме рабочего стола:
Обратите внимание, что заголовок уже выходит за границы строки строки.
Из-за этого короткоговысота строки, текст накладывается на перенос (как на маленьких экранах):
Решение , хотите верьте, хотите нет,просто удалить единицу длины из значения line-height
.
Поэтому вместо line-height: 1.6rem
используйте line-height: 1.6
.
Возможно, вы даже захотите использовать значение по умолчанию 1.2 (в этом случае вы можете вообще опустить правило line-height
).
Причина, по которой это работает следующим образом:
При использовании line-height: 1.6rem
высота строки строки вычисляется на основе размера шрифта корневого элемента .В вашем случае это 16px (значение по умолчанию в браузере).
line box height: 1.6 * 16px = 25.6px
h1 font size: 4.0 * 16px = 64.0px
Вот так h1
превышает высоту строки.
Но с line-height: 1.6
высота строки строки вычисляется на основе размера самого шрифта .
line box height: 1.6 * (4 * 16px) = 102.4px
h1 font size: 4.0 * 16px = 64.0px
Вот так строковый блок превышает высоту h1
.
Также имеет смысл использовать безразмерные значения в свойстве line-height
.
См. Спецификацию для справок и более подробной информации: