Em это что: REM vs EM – Великий спор / Хабр

Что такое px, em, rem в CSS?

Многие люди путаются при работе с этими тремя единицами в CSS. Главной причиной этого является отсутствие понимания различий имеющихся между ними.

Для начала нужно усвоить базовое понимание этих единиц:

  • Px (пиксель) – это единица измерения величины объектов относительно размера экрана.
  • Em – это единица, основанная на размере шрифта родительского элемента (в пикселях).
  • Rem – это единица,основанная на размере шрифта корневого элемента html (в пикселях).

Мы можем использовать эти единицы в различных свойствах CSS, таких как font-size, padding, margin, position.

  • Что такое Px
  • Em
  • Rem
  • Путаница между em и rem
  • Вложенные элементы
  • Комбинированный пример
  • Заключение

Пиксели представляют собой неделимые объекты прямоугольной или круглой формы, размеры которых зависят от диагонали экрана устройства. Пиксель– это фиксированная единица, которая применяется к отдельным элементам там, где она определяется.

Пример:

div { font-size: 10px; padding: 10px; }

Эта строка кода CSS устанавливает размер шрифта в 10px и отступы размером в 10px со всех сторон.

Единицы измерения em зависят от размера шрифта родительского элемента. Это не фиксированные единицы, поскольку они зависят от базового размера. Когда изменяется размер родительского элемента, меняется и значение em.

Пример:

div { font-size: 10px; padding: 10em; }

Данный код CSS устанавливает размер шрифта в 10px, и отступы толщиной в 100px с каждой стороны, поскольку размер берётся из свойства font-size. В нем каждое значение принимается за 1em, то есть (10px = 1em, поэтому 10em = 10px * 10 = 100px).

Единица измерения rem зависит от размера шрифта, заданного в браузере по умолчанию, или размера шрифта, при именного к элементу html. Если базовый размер меняется, то значение rem также изменяется.

Вы можете изменить размер шрифта, используемый по умолчанию, в настройках браузера.

Пример:

Допустим, размер шрифта, используемый по умолчанию в браузере – 14px.

div { font-size: 10px; padding: 10rem; }

Этот код установит размер шрифта в 10px и отступы в 140px с каждой стороны. При этом базовым будет размер шрифта по умолчанию, заданный в браузере, который берётся за 1rem. То есть: 14px = 1rem, поэтому 10rem = 14px * 10 = 140px.

Вопрос, который возникает при использовании этих единиц измерения: «Какие же единицы применять?» Особенно это касается em и rem. Какие элементы установить зависимыми от базового размера,а для каких применять динамические единицы измерения?

  • Задача: задать размер элемента относительно размера шрифта, используемого по умолчанию на сайте, там, где не нужно менять размеры. В этом случае “rem” предпочтительнее.
  • Чтобы использовать динамические единицы измерения там, где при уменьшении размера шрифта уменьшаются отступы или поля, применяйте “em”.

Для вложенных элементов используется только одна единица измерения – em. Если размеры шрифта или отступов дочернего элемента должны быть наполовину меньше, чем у родительского, тогда используйте em.

Пример:

div.parent { font-size: 10px; }
div.parent div.child { font-size: 0.5em; }

Этот код установит размер шрифта родительского элемента в 10px, а шрифт дочернего элемента в 5px.Так как его размер зависит от значения font-size родительского элемента, которое принимается за 1em. То есть:10px = 1em, поэтому 0.5em = 10px / 2 = 5px.

Предположим, что размер шрифта, используемый по умолчанию в браузере,составляет 14px. Как это отразится на всех трёх единицах измерения?

Пример:

div.parent { font-size: 10px; padding: 10em; margin: 10rem;}
div.parent div.child { font-size: 0.5em; padding: 10em; margin:10rem}

Для (div.parent)

  • Размер шрифта = 10px.
  • Внутренние поля с каждой стороны (10px = 1em, поэтому 10em * 10px) = 100px.
  • Отступы с каждой стороны (14px = 1rem, поэтому 10rem * 14px) = 140px.

Для (div.child)

  • Размер шрифта (0.5em = 10px / 2) = 5px.
  • Внутренние поля с каждой стороны (5px = 1em, поэтому 10em * 5px) = 50px.
  • Отступы с каждой стороны (14px = 1rem, поэтому 10rem * 14px) = 140px.

Ключевым для стилей дочернего элемента является свойство font-size, поскольку оно наследуетсяот родительского элемента.Для него размер шрифта задан в 10px, а в дочернем элементе он установлен в 0.5em. То есть, делится на два (как размер шрифта дочернего элемента).

Поля зависят от размера шрифта текущего элемента. За 1em принимается размер в 5px, (размер шрифта дочернего элемента).

Только отступы постоянны в обоих случаях. Они напрямую наследуются от корневого элемента html. Базовый размер шрифта в 14px неизменен, поэтому поля будут иметь размер 140px в обоих случаях.

Чтобы преодолеть эту путаницу в единицах измерения, нужно знать, какие элементы зависят от настроек браузера, а какие основаны на размере экрана пользовательского устройства.

Сергей Бензенкоавтор-переводчик статьи «Use of px, em, rem units in css, which one I have to use and when?»

: Элемент акцентирования — HTML

HTML <em> элемент отмечает акцентируемый текст. Элемент <em> может быть вложенным, причём каждый уровень вложенности указывает на большую степень акцента.

К этому элементу применимы глобальные атрибуты.

Элемент <em> предназначен для слов, которые имеют подчёркнутый акцент по сравнению с окружающим текстом, который часто ограничивается словом или словами предложения и влияет на смысл самого предложения.

Обычно этот элемент отображается курсивом. Однако его не следует использовать просто для применения курсивного стиля; для этой цели используйте свойство CSS font-style. Используйте элемент <cite>, чтобы пометить название произведения (книги, пьесы, песни и т. д.). Используйте элемент <i> (en-US), чтобы пометить текст в альтернативном тоне или настроении, который охватывает многие распространённые ситуации курсива, такие как научные имена или слова на других языках. Используйте элемент <strong>, чтобы пометить текст, который имеет большее значение, чем окружающий текст.

< i> против <em>

Новые разработчики часто путаются, видя несколько элементов, которые дают аналогичные результаты. <em>

и <i> являются общим примером, поскольку они оба выделяют текст курсивом. Какая разница? Что вы должны использовать?

По умолчанию визуальный результат тот же. Однако смысловое значение здесь другое. Элемент <em> представляет ударение на его содержании, в то время как элемент <i> представляет текст, который отличается от обычной прозы, например, иностранное слово, изречения вымышленного персонажа или когда текст ссылается на определение слова вместо представления его семантического значения. (Для названия произведения, например названия книги или фильма, следует использовать <cite>.)

Это означает, что правильное использование зависит от ситуации. Ни для чисто декоративных целей, это то, для чего предназначен CSS-стиль.

Примером для <em> может быть: -«Просто сделай это!», или: «Мы

должны были что-то с этим сделать». Человек или программа, читающие текст, будут произносить слова, выделенные курсивом, с ударением, используя словесное ударение.

Примером для <i> может быть: «Королева Мэри отплыла прошлой ночью». Здесь нет никакого дополнительного акцента или важности на слове «Королева Мэри». Просто указывается, что речь идёт не о королеве по имени Мария, а о корабле по имени Королева Мария. Другим примером для <i> может быть: «Слово ‘the’ это артикль».

Элемент <em> часто используется для указания неявного или явного контраста.

<p>
  В HTML 5, что ранее называлось
  контентом <em>уровня блока</em> теперь называется
  контентом <em>потока</em>.
</p>

Результат

Specification
HTML Standard
# the-em-element

BCD tables only load in the browser

with JavaScript enabled. Enable JavaScript to view data.
  • <i> (en-US)

Last modified: , by MDN contributors

Определение

в кембриджском словаре английского языка

Переводы ’em

на китайский (традиционный)

(them的縮略形式)…

Подробнее

на китайском (упрощенном)

(them的缩略形式)…

Подробнее

на Португальский

forma abreviada de «them»…

Увидеть больше

на других языках