Вот большая статья, которая поможет объяснить различия между рх/EM/бэр
https://www.futurehosting.com/blog/web-design-basics-rem-vs-em-vs-px-sizing-elements-in-css/
Кроме того, это может быть полезно: https://css-tricks.com/rems-ems/
EDIT
Как @Jesse Kernaghan прокомментировал, что приведенные выше ссылки могут быть легко разбиты, я опишу. Различия между PX и EM против REM.
ПВ
Пиксель абсолютное измерение, что означает, что они имеют одинаковый размер, независимо от размера чего-либо другого. На практике они не имеют одинаковой длины везде, потому что определенные устройства обрабатывают их по-разному, однако на каждом устройстве пиксель всегда один и тот же. 16px
на вашем мониторе ноутбука - это не то же самое, что и 16px
на вашем iPad. Пиксели являются абсолютными, но не согласованными.
ет
Где px
является абсолютной мерой длины em
«ы являются относительно размера шрифта родительского элемента. Рассмотрим следующий пример:
div{ font-size: 22px; }
p{ width: 200em; margin: 3em; font-size: 0.8em;}
<div>
<p>Some text</p>
</div>
Теперь, если вы хотите, чтобы половину размера p
элемента вам просто нужно будет изменить размер шрифта окружающего <div>
в 11px
.
Эта единица измерения может быть очень полезной, поскольку она соответствует гибким макетам.
Однако есть проблемы с em
. Поскольку все имеет размер относительно родителя, значение em изменяется, поскольку элементы вложены. Если вы возьмете приведенный выше пример и развернете его и вставьте <blockquote>
внутри <p>
с font-size
из 0.5em
, результат, вероятно, не будет тем, что ожидается. Результатом будет то, что font-size
из <p>
будет равна 11px
однако font-size
из <blockquote>
будет половина этого снова, потому что em
является относительно непосредственного предка (<p>
), не <div>
.
бэр
Rems (корень СЭМ), подобны em
-х, но они всегда по отношению к font-size
от <html>
элемента. Неважно, насколько глубоко вложен элемент.
Заключение
Так с кратким пояснением из пути есть основная концепция, что Крис Coyier имеет в своем посте https://css-tricks.com/rems-ems/. В основном это позволяет установить базовый размер шрифта html
, а затем корректировать медиа-запрос, используя px
(помните, что это абсолютное измерение). И внутри этих медиарешений размер изменяется, только вы уменьшаете размер шрифта. Затем вы устанавливаете основные элементы с помощью rem
, а элементы, которые необходимо масштабировать, с основными элементами используют em
. Крис Coyier пример кода ниже:
/* Document level adjustments */
html {
font-size: 17px;
}
@media (max-width: 900px) {
html { font-size: 15px; }
}
@media (max-width: 400px) {
html { font-size: 13px; }
}
/* Modules will scale with document */
.header {
font-size: 1.5rem;
}
.footer {
font-size: 0.75rem;
}
.sidebar {
font-size: 0.85rem;
}
/* Type will scale with modules */
h1 {
font-size: 3em;
}
h2 {
font-size: 2.5em;
}
h3 {
font-size: 2em;
}
Проблема в том, что медиа-запросы не получают свой «базовый размер» из тела, а скорее настройки UA или user pref. Изменение размера шрифта тела не влияет на размер шрифта медиа-запросов. –