Html rem: REM vs EM – Великий спор / Хабр

Содержание

rem | WebReference

Единица rem соответствует значению свойства font-size корневого элемента <html>. Если rem добавляется непосредственно к font-size для <html> или стиль для <html> не задан, тогда 1rem принимается равным исходному значению font-size. В браузерах по умолчанию 1rem = 16px.

Пример

<!DOCTYPE html> <html> <head> <meta charset=»utf-8″> <title>rem</title> <style> html { font-size: 62.5%; } /* 10px */ body { font-size: 1.8rem; } /* 18px */ h2 { font-size: 2.8rem; } /* 28px */ </style> </head> <body> <h2>Почему возможна интроекция?</h2> <p>Как отмечает Д. Майерс, у нас есть некоторое чувство конфликта, которое возникает с ситуации несоответствия желаемого и действительного.</p> </body> </html>

В данном примере размер шрифта для корневого элемента задан в процентах, в итоге получается равным 10px. Для размеров основного текста и заголовка применяется единица rem, которая считается относительно уже заданного размера html.

Спецификация

СпецификацияСтатус
CSS Values and Units Module Level 4Рабочий проект
CSS Values and Units Module Level 3Возможная рекомендация
Спецификация

Каждая спецификация проходит несколько стадий одобрения.

  • Recommendation (Рекомендация) — спецификация одобрена W3C и рекомендована как стандарт.
  • Candidate Recommendation (Возможная рекомендация) — группа, отвечающая за стандарт, удовлетворена, как он соответствует своим целям, но требуется помощь сообщества разработчиков по реализации стандарта.
  • Proposed Recommendation (Предлагаемая рекомендация) — на этом этапе документ представлен на рассмотрение Консультативного совета W3C для окончательного утверждения.
  • Working Draft (Рабочий проект) — более зрелая версия черновика после обсуждения и внесения поправок для рассмотрения сообществом.
  • Editor’s draft (Редакторский черновик) — черновая версия стандарта после внесения правок редакторами проекта.
  • Draft (Черновик спецификации) — первая черновая версия стандарта.

Браузеры

912411.64.13.6
24124
Браузеры

В таблице браузеров применяются следующие обозначения.

  • — элемент полностью поддерживается браузером;
  • — элемент браузером не воспринимается и игнорируется;
  • — при работе возможно появление различных ошибок, либо элемент поддерживается с оговорками.

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

См. также

Справочник CSS

Значения свойств

Функции

Единицы CSS

Типы элементов

@-правила

Анимация

Границы

Контент

Логические

Отступы и поля

Печать

Позиционирование

Псевдоклассы

Псевдоэлементы

Размеры

Списки

Таблицы

Текст и шрифт

Флексы

Форматирование

Формы

Цвет и фон

rem, em — CSS — Дока

  1. Кратко
  2. Пример
  3. Как пишется
  4. Как понять
  5. Подсказки
  6. На практике
    1. Realetive советует
    2. Алёна Батицкая советует

Кратко

Скопировано

Задаёт размер относительно величины шрифта родительского элемента — em (от ephemeral unit — «относительная единица измерения») или корневого элемента <html> или <svg>rem (от root ephemeral unit — «главная относительная единица»).

Пример

Скопировано

Пусть размер шрифта корневого элемента <html> будет равен 16 пикселям:

html {  font-size: 16px;}
          
html { font-size: 16px; }

Тогда размер шрифта элемента с классом block будет равен 16px × 1,5 = 24px:

.block {  font-size: 1.5rem;}
          .block {
  font-size: 1.5rem;
}

Значение в единицах em всегда рассчитывается от размера шрифта элемента: оно либо наследуется от родителя, либо задаётся на самом элементе. Продолжая наш пример, если элементу блока просто задать ширину 5em, то для расчёта будет использован унаследованный размер шрифта: 16px × 1,5 × 5 = 120px.

.block__elem {  width: 5em;}
          .block__elem {
  width: 5em;
}

А если самому элементу задать размер шрифта 2em, то к унаследованному размеру добавится ещё один множитель: 16px × 1,5 × 5 × 2 = 240px.

.block__elem {  width: 5em;  font-size: 2em;}
          
.block__elem { width: 5em; font-size: 2em; }

Как пишется

Скопировано

Как и все остальные единицы измерения в CSS — em и rem пишутся сразу после числового значения без пробела:

.selector {  width: 10em;}.selector {  margin: 5rem;}
          .selector {
  width: 10em;
}
.selector {
  margin: 5rem;
}

Как понять

Скопировано

Единицы em и rem используют для вычисления размера шрифта, но применимы вычисленные значения для любых свойств, в которых указываются размеры: width, height, padding, margin, border-width и так далее.

Итоговое значение размера, заданное через em и rem, вычисляется динамически и меняется, когда значение, от которого вычислялось em и rem, изменится.

Подсказки

Скопировано

💡 Часто при работе с rem для селектора html пишется следующее CSS-правило:

html {  font-size: 62.5%;}
          html {
  font-size: 62.5%;
}

Магическое число 62.5% равняется 10 пикселям при учёте, что стандартный размер шрифта браузера по умолчанию равен 16 пикселям. 16px = 100%, 10px = 62.5%.

Когда 1rem = 10px гораздо проще вести все расчёты при вёрстке.

На практике

Скопировано

Realetive советует

Скопировано

🛠 Если размер страницы был изменён глобально, то есть через настройки операционной системы или с помощью Ctrl + / Ctrl -, то значение шрифта у <html> также пропорционально изменится, даже если оно было задано явно. Такое масштабирование будет происходить более пропорционально, если при вёрстке вы сможете найти закономерности размеров элементов относительно размера шрифта.

Алёна Батицкая советует

Скопировано

🛠 При помощи относительных единиц шрифта можно классно верстать адаптивные сайты. Например, если в мобильном и десктопном макетах пропорции одинаковые, и меняются только фактические размеры, то можно сделать, например, так:

html {  /* 10px */  font-size: 62.5%;}.title-block {  /* 10rem * 10px = 100px */  width: 10rem;  /* 2rem * 10px = 20px */  font-size: 2rem;}@media (max-width: 640px) {  html {    /* 8px */    font-size: 50%;  }}
          html {
  /* 10px */
  font-size: 62.5%;
}
.title-block {
  /* 10rem * 10px = 100px */
  width: 10rem;
  /* 2rem * 10px = 20px */
  font-size: 2rem;
}
@media (max-width: 640px) {
  html {
    /* 8px */
    font-size: 50%;
  }
}

Без дополнительных правил ширина блока уменьшилась до 80px, а размер шрифта внутри до 16px.

Всего одним правилом мы масштабировали размеры блока и шрифта внутри него. Очень элегантное решение 😇

Если вы нашли ошибку, отправьте нам пул-реквест!

Во время отправки формы что-то пошло не так. Попробуйте ещё раз?

vw, vh, vmin, vmax

ctrl + alt +

CSS-анимации

ctrl + alt +

Что такое Бэр? (и как их использовать в CSS)

Из многих вариантов стилей HTML, которые поддерживает CSS, размер шрифта является важным свойством, особенно когда речь идет об отзывчивости дисплея. Кроме того, есть несколько способов задать размер шрифта с помощью CSS. Из них единицы rem оказались исключительно гибкими и относительно интуитивными.

Rem (сокращение от «root-em») Единицы определяют размер шрифта элемента относительно размера корневого элемента. По умолчанию большинство браузеров используют значение размера шрифта 16px. Таким образом, если корневой элемент имеет размер 16 пикселей, элемент со значением 1rem также будет равно 16px. Поэтому единицы rem полезны для масштабирования элементов CSS по отношению к размеру корневого элемента, даже если вы не знаете, какой будет размер шрифта по умолчанию.

В этой статье мы рассмотрим, что такое единицы rem и как их эффективно использовать для ваших нужд в стиле.

Что такое CSS?

Для адаптивных веб-страниц размер веб-элементов изменяется в зависимости от размера области просмотра. CSS позволяет вам объявлять размер шрифта, используя абсолютные единицы, такие как пиксели (px), или относительные единицы, такие как проценты, em или единицы rem.

Поскольку пиксели являются абсолютными единицами измерения, они не масштабируются вместе с окном просмотра. Таким образом, 1px представляет собой одну единицу на физическом устройстве, независимо от размера устройства. В результате создание адаптивных веб-сайтов часто проще с использованием относительных единиц, таких как проценты, em или бэр.

Проценты относятся к родительскому элементу или свойству в этом элементе. Они обычно используются для установки ширины и высоты элемента.

Единицы Em относятся конкретно к родительскому элементу, позволяя элементу масштабироваться в контексте родителя. Рассмотрим p  тег, вложенный в элемент article    с размером шрифта 18 пикселей:

 
.article {

  font-size: 18px;

}

p {

  размер шрифта: 2em;

  /* устанавливает размер шрифта = 36px */

}

Присвоение элементу p размера шрифта 2em  приводит к фактическому размеру шрифта 36px — вдвое больше значения элемента article 90.

Что такое rem CSS?

Подобно единицам em, бэры являются относительными единицами. Однако они ссылаются на корневой элемент — обычно это сам элемент HTML  . Большинство браузеров устанавливают размер шрифта по умолчанию равным 16px. Однако вы можете изменить это. Например, чтобы изменить размер шрифта на 14 пикселей, добавьте в свою таблицу стилей следующее:

 
html {

  font-size: 14px

}

После того, как вы установите размер элемента HTML, вы можете указать размеры всех других элементов, которые используют единицы rem, в процентах от этого размера (выраженные в виде десятичной дроби).

Например, предположив, что размер шрифта по умолчанию для корневого объекта составляет 16 пикселей, вы должны оформить абзац с размером шрифта 12 пикселей, используя 0,75rem , потому что 12 ÷ 16 = 0,75:

 
p {

  font-size : 0,75 бэр;

}

Выполнение этих вычислений каждый раз, когда вы хотите преобразовать рем в пиксели, может довольно быстро разочаровать. Рассмотрим следующие значения, полученные путем преобразования 14px, 18px и 20px в бэр-единицы:

  • 14 пикселей = 0,875 бэр
  • 18 пикселей = 1,125 бэр
  • 20 пикселей = 1,25 бэр

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

К счастью, трюк с 62,5% призван решить эти проблемы. При установке размера корневого шрифта на 62,5% от его значения по умолчанию эталонное значение обычно становится 10 пикселей, что делает указанные выше значения равными 1,4 rem, 1,8 rem и 2,0 rem соответственно.

Но зачем устанавливать размер основного шрифта 62,5 % вместо 10 пикселей?

Одним из основных преимуществ относительных единиц является их масштабируемость независимо от физического размера дисплея. Изменение корневого значения с использованием абсолютной единицы означает, что содержимое будет трудно читать или перемещаться по нему. Трюк 62,5% гарантирует, что разработчики могут легко масштабировать значения, не беспокоясь о типе устройства, используемого для просмотра контента.

Реализация трюка 62,5% в вашем CSS будет выглядеть следующим образом:

 
html {

  font-size: 62,5%;

  /* изменяет размер шрифта 16px по умолчанию на 10px */

}

h2 {

  font-size: 2.4rem;

  /* размер шрифта = 24 пикселя */

}

h3 {

  font-size: 1.6rem;

  /* размер шрифта = 16 пикселей */

}

p {

  font-size: 1.2rem;

  /* размер шрифта = 12 пикселей */

}

Как видите, расчет рем-единиц с использованием базы 10 пикселей упрощает задачу. Однако есть шанс, что трюк с 62,5% может увеличить вашу рабочую нагрузку. Если ваше тело должно иметь размер 12 пикселей, вам в конечном итоге придется установить размер шрифта для большинства модулей или элементов на 12 пикселей. В этом случае вы могли бы вместо этого установить размер тела на 12 пикселей. Так что имейте это в виду при использовании этого трюка.

Использование Rem в медиа-запросах

Спецификация медиа-запросов утверждает, что медиа-запросы (почти) всегда независимы от каких-либо внутренних стилей в документе.

Таким образом, единицы rem, используемые в медиа-запросах, зависят от размера браузера по умолчанию или размера, установленного пользователем в настройках браузера, а не от размера, указанного в таблице стилей.

Это означает, что трюк с 62,5% не работает в блоке медиа-запроса, и 1rem внутри будет равен 16px или значению, указанному пользователем.

Возьмем этот пример с точкой останова мультимедиа 32rem :

 
html {

  font-size: 62,5%;

  /* размер шрифта: 10 пикселей */

}

h2 {

  размер шрифта: 2.4rem;

  /* font-size: 24px */

}

@media (width <= 32rem) {

  h2 {

    font-size: 2rem;

  }

}

Точкой останова здесь будет не 32 × 10 пикселей = 320 пикселей, а 32 × 16 пикселей = 512 пикселей.

Почему вы должны использовать единицы rem?

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

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

Rem Единицы и проценты

Проценты обычно лучше всего использовать для определения ширины элементов, поскольку они обеспечивают более гибкое решение, чем единицы rem. Это особенно верно в макете с несколькими столбцами. Установка ширины столбцов в процентах гарантирует, что они всегда масштабируются с размером области просмотра.

Например, в макете с двумя столбцами можно использовать проценты для разделения контейнера:

 
.column1 {

  ширина: 75%;

}

.column2 {

  ширина: 25%;

}

Это позволяет масштабировать столбцы пропорционально размеру области просмотра.

Единицы Rem и Em

В то время как единицы rem относятся к корневому элементу, em относятся к родительскому элементу.

Чтобы проиллюстрировать, как это работает, рассмотрите размеры родительского и дочернего шрифтов, показанные ниже. Размер родителя указан в пикселях, а размер дочернего элемента — в единицах em.

 
.parent {

  размер шрифта: 18 пикселей;

}

.child {

  размер шрифта: 2em;

/* размер шрифта: 36 пикселей */

}

Фактический размер шрифта ребенка составляет 2 × 18 пикселей = 32 пикселя.

Если для родительского элемента не задан размер шрифта, em будет проверять следующий родительский элемент в дереве DOM — вплоть до корневого элемента — до тех пор, пока не найдет единицу измерения для ссылки.

Когда em используется для значений измерения, отличных от размера шрифта, его значение получается из размера шрифта этого элемента. Вот пример h2  с использованием единиц em, вложенных в div  element:

 
div {

  font-size: 12px;

}

h2 {

  размер шрифта: 2em;

  набивка: 1,5 см;

}

Здесь размер шрифта h2 составляет 24 пикселя (2 × 12 пикселей). Затем значение отступа рассчитывается из этого значения как 1,5 × 24 пикселей = 36 пикселей.

Проблема с em заключается в том, что размер шрифта увеличивается при вложении элементов.

Возьмем этот пример вложенного списка, оформленного с помощью CSS:

 

  • Напитки (30px)

    • Чай (60px)

      • Черный чай (120px)
      • Зеленый чай (120px

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

Вы можете избежать этого эффекта с единицами rem, так как размер шрифта всех элементов в документе определяется размером шрифта HTML-элемента. 0003

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

Например, при стилизации компонента навигации вы хотите, чтобы его элементы padding, margin, width и height масштабировались вместе с ним. Вы можете использовать единицы em для этих свойств и единицы rem для размера шрифта.

Использование Rem, Em и процентов в CSS

Единицы Rem позволяют устанавливать размеры относительно корневого элемента. Таким образом, они отличаются от других вариантов размеров, таких как единицы em, которые зависят от родительского элемента, или проценты, реальные значения которых зависят от свойства, для которого они используются.

При создании доступных веб-сайтов следует избегать использования пикселей для изменения размера элементов шрифта. Их абсолютность означает, что они не масштабируемы. Вместо этого выберите rems, ems и проценты. Используйте единицы rem для создания элементов, которые масштабируются в зависимости от пользовательских настроек, и единицы em для элементов, которые должны масштабироваться в зависимости от их родительских элементов. Для создания гибких макетов используйте проценты.

Конечно, из каждого правила есть исключения. Воспользуйтесь методом проб и ошибок, а также своим здравым смыслом и уделите приоритетное внимание масштабируемости и доступности в своем веб-дизайне.

код электронной почты | Веб-сайт ресурсов с кодом электронной почты

Последнее обновление:

Существует ряд различных единиц измерения, которые можно использовать для установки размеров в CSS. Их можно сгруппировать в абсолютные и относительные.

Абсолютные единицы никогда не меняются и хороши для последовательности, но им не хватает гибкости. К ним относятся px (пикселей), pt (точек), pc (picas), см (сантиметров), дюймов (дюймы) и другие.

Относительные единицы более гибкие, поскольку они основаны на чем-то другом. К ним относятся vw (ширина области просмотра), vh (высота области просмотра), lh (текущая высота строки) и другие, но для доступности нас интересуют rem и em .

Существуют также значения ключевых слов, которые представляют собой смесь относительного и абсолютного значений. средний по умолчанию (равно 1rem), затем малый большой x-большой xx-большой и т. д. все относительно этого. Затем меньших и больших будут корректироваться относительно размера родительского шрифта.

Что такое единицы EM и единицы REM

em единиц равны текущему размеру шрифта, название происходит от ширины прописной буквы M. Таким образом, если у вас установлено значение font-size:16px , то 1em будет равно 16px . Если бы вы тогда изменили это на размер шрифта: 20px для заголовка, 1em будет равен 20px .

rem единиц аналогичны em , однако эти значения относятся к размеру шрифта :root , а не к текущему размеру шрифта, поэтому значение не меняется. Название происходит от Root EM.

Почему вам следует использовать устройства EM и REM

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

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

Какое значение по умолчанию для

1rem / средний

В большинстве веб-браузеров значение по умолчанию — 16px , так как это удобный для чтения размер шрифта для большинства людей.

Однако размер по умолчанию в клиентах немного отличается. Глядя на популярные почтовые клиенты, он колеблется между 12px и 17px 9.0003

Размер шрифта по умолчанию для почтовых клиентов

Это просто ориентир, чтобы показать диапазон найденных размеров. Я заметил несколько несоответствий между тестами, которые я запускал локально и через Litmus.

Здесь я рассматриваю 3 фактора;

  • По умолчанию это значение по умолчанию в настройках пользователя, эквивалентное использованию размер шрифта: средний
  • Root это размер корневого шрифта, в основном он будет таким же, как и по умолчанию, но может быть переопределен стилем почтового клиента, что эквивалентно использованию размер шрифта: 1rem
  • Унаследовано Это унаследовано от стилей почтового клиента, что эквивалентно добавлению простого текста без каких-либо стилей
Почтовый клиент По умолчанию Корень Унаследовано
АОЛ 16px н/д 12px
Yahoo 16px н/д 13px
Applemail для настольных ПК 12px 12px 12px
Applemail iPad/iPhone 16px 16px 17px
IBM Notes 16px 16px 16px
Окна Outlook 18px н/д 14px
Outlook Mac 14px 14px 14px
Outlook Android 16px 16px 16px
Outlook iOS 16px 16px 16px
Веб-почта Outlook 16px 16px 15px
Outlook PWA 16px 16px 15px
Тандерберд 15px 17px 15px
Андроид 16px 16px 14px
Gmail IMAP 16px 16px 12px
Веб-почта Gmail 16px 16px 13px
Gmail Android 16px 16px 12px
Gmail iOS 16px 16px 16px
Самсунг 16px * 16px * 17px
Конкаст 16px 16px 13px
Веб-почта Freenet 16px 16px 16px
Freenet Android 16px 16px 16px
Freenet iOS. 16px 16px 23px
GMX и web.de 12px н/д 12px
Веб-почта Mail.ru 16px 15px 15px
Mail.ru Android 16px 16px 17px
Mail.ru iOS 16px 16px 15px
Т-онлайн 16px 16px 13px

Стоит отметить, что некоторые из этих значений по умолчанию уже меняются вместе с пользовательскими настройками.

* Samsung устанавливает минимальный размер шрифта 17 пикселей, поэтому эти значения 16 пикселей работают только при использовании для создания размера шрифта, превышающего или равного 17 пикселям. При использовании для других настроек, таких как отступы, поля и т. д., минимальный размер отсутствует.

Сброс размера шрифта

К сожалению, устройства rem еще не имеют полной поддержки в почтовых клиентах, поэтому пока я рекомендую использовать em единиц внутри электронной почты. Но также установите размер шрифта по умолчанию для родительского элемента-обертки, чтобы улучшить согласованность и доступность.

В идеале мы хотим вернуть размер шрифта к 1rem , однако некоторые почтовые клиенты не поддерживают rem , а в некоторых значение по умолчанию может быть очень маленьким (12 пикселей в Applemail), поэтому мы установим минимальный размер и несколько резервных вариантов.

 <дел>
 

Я рассмотрю эти значения в обратном порядке, так как это приоритетный порядок;

размер шрифта: макс (16px, 1rem)

Там, где это поддерживается, размер шрифта будет сброшен в соответствии с предпочтениями пользователя 1rem с минимальным размером 16px для корректировки небольших корневых размеров по умолчанию.

Формулировка сбивает с толку, так как мы используем max , чтобы установить минимальный размер шрифта , но идея в том, что он выбирает большее из установленных здесь значений.

N.B. Это не позволит пользователю установить меньший предпочтительный размер шрифта. Так что это не идеальное решение, вы можете оставить эту часть выключенной.

размер шрифта:средний

Если почтовый клиент не поддерживает max , мы вернемся к использованию font-size:medium , все почтовые клиенты, которые я тестировал, поддерживают это, и он передал пользователям предпочтительный размер шрифта.

Редактировать — февраль 2022 г.: В предыдущей версии этой статьи я использовал rem единиц и дополнительный запасной вариант до 16px font-size:16px;font-size:1rem; font-size:max(16px, 1rem) , но позже нашел размер шрифта: средний имеет лучшую поддержку.

Редактировать — май 2022 г.: Похоже, что спецификация CSS была обновлена, так что размер шрифта: «средний» больше не требуется для соответствия предпочтительному размеру шрифта пользователя, поэтому это поведение может измениться в будущем

Преобразование кода для использования

em

В основном стандартный размер для 1rem равен 16px , поэтому использование его в качестве основы позволит вашему размеру выглядеть одинаково для большинства пользователей. Итак, чтобы вычислить em из px, разделите px значение на 16, и это даст вам значение em .

Так например

  • , если ваш шрифт 20px , разделенный на 16, дает вам 1.25em .
  • Если ваш шрифт 18px разделить на 16, вы получите 1.125em
  • Если ваш шрифт 10px , он слишком мал. Не используйте шрифты размером 10px.

В идеале минимальный размер шрифта должен быть 1em , но при нажатии я иногда уменьшаю его до .8em , если вы очень хорошо попросите, и у меня нет времени с вами разговаривать.

Какие стили следует использовать

em

До сих пор мы говорили о размер шрифта , но вы можете использовать em везде, где вы можете использовать px . Наиболее важными из них являются вещи, которые влияют на расстояние вокруг текста.

высота строки , вероятно, наиболее важна, так как она должна быть относительно размера шрифта , для которого вы можете использовать em (также % работает точно так же) или безразмерные значения аналогичны, за исключением того, что они также наследуются как относительные, где em и % наследуются как фиксированное значение..

поля и отступы вокруг текста также должны быть установлены как em , так как это может повлиять на удобочитаемость. В остальном это не так важно.

Установка ширины для текста с использованием em также может улучшить доступность. Например

не позволит мелким шрифтам создавать очень длинные абзацы, которые труднее читать.

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

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

Унаследованные значения

Как я уже упоминал, значение 1em может измениться по электронной почте. Это можно рассматривать как плюсы и минусы использования em единиц.

  

Заголовок

Абзац

В этом примере, если для пользовательского корневого шрифта установлено значение 16 пикселей, то абзац имеет поле 16 пикселей 0 , а заголовок — 32 пикселя 0 , хотя это тот же код. Вероятно, вы захотите увеличить интервал вокруг заголовка, но это может занять некоторое время, чтобы приспособиться к нему.

Еще один хороший пример, если у нас есть электронное письмо с выделенным разделом, где мы хотим увеличить размер шрифта. Мы можем использовать тот же модуль, что и для других разделов, но просто обернем его размером шрифта : 1,5 em , и он увеличит все размеры этого раздела с помощью небольшого кода. То же самое можно сделать в нижнем колонтитуле, где нам может понадобиться маленький шрифт, мы можем просто использовать размер шрифта : 0,8em , и это уменьшит размеры этого раздела.

Проблемы

Медиа-запросы

Если вы задаете медиа-запросы, используя rem или em , они всегда отталкиваются от предпочитаемого пользователями размера шрифта . Это будет конфликтовать с исправлением минимального размера шрифта, которое мы используем max(16px, 1rem) .

Итак, например, мы устанавливаем медиа-запрос 100em . В Apple Mail с настройками по умолчанию это будет 1200px , но в большинстве других мест это будет 1600px .

Атрибуты

em единиц не работают внутри атрибутов, единица эффективно удаляется из кода и отображается так, как если бы единица измерения не использовалась, что по умолчанию равно px .

Таким образом, установите width="10em" с визуализацией как 10px , а не 10em . Но это незначительная проблема, так как мы можем установить стили в атрибуте style , который поддерживает em .