Единицы CSS

В CSS вы можете найти различные единицы измерения для всех элементов, составляющих документ ‹html›, наиболее часто используемыми всеми являются px , однако, как объясняется в MDN, существует гораздо больше. На этот раз мы сосредоточимся на основных различиях между абсолютными единицами измерения и относительными единицами em и rem.

Абсолютные единицы не изменяются в размере, а относительные единицы изменяются в соответствии с размером шрифта родительского элемента.

Пиксели

Пиксели являются фиксированными единицами внутри документа и не являются относительными и не зависят от других единиц или вариантов шрифта. В следующем примере у нас есть контейнер с классом .units шириной 200 пикселей и высотой 100 пикселей.

.units {
  width: 200px;
  height: 100px;
}

Помните, что по умолчанию большинство браузеров имеют размер шрифта: 16px в корневом элементе‹html›в этом случае, когда мы используем абсолютные единицы, поэтому размер шрифта корневого элемента изменяется, наш контейнер останется с той же шириной и высотой определены изначально.

Рем

Единицы rem — это единицы относительно корневого элемента ‹html›, помните, что в большинстве браузеров размер шрифта: 16px, возвращаясь к нашему примеру с контейнером, в котором размер составляет 200px в ширину и 100px в высоту, теперь, когда вы означает, что это относительно корневого элемента, это означает, что 1rem = размер шрифта корневого элемента

1rem = 16px  //When the font size of the root element has not changed.

В следующем примере мы будем конвертировать из px в rem, как вы можете видеть, наш контейнер по-прежнему сохраняет ширину и высоту, изначально определенные как 200px x 100px, поскольку размер шрифта равен 16px.

.units {
  width: 12.5rem; // 12.5rem = 200px / 16px (font size of root element)
  height: 6.25rem; // 6.25rem = 100px / 16px (font size of root element)
}

Теперь, в случае, если наш источник корневого элемента изменится, например, на 24px, наш контейнер будет иметь следующие меры:

.units {
  width: 12.5rem; // 12.5rem * 24px (new font size of root element) = 300px
  height: 6.25rem; // 6.25rem * 24px (new font size of root element) = 150px
}