В исходном коде веб-сайта я иногда видел, как разработчики используют этот rem
модуль. Это похоже на em
? Я попробовал посмотреть, что он делает на самом деле, но что это относительно?
HTML
<div>Hello <p>World</p></div>
CSS
div {
font-size: 1.4rem;
}
div p {
font-size: 1.4rem;
}
Ответы:
EM
s относительно размера шрифта их родителяREM
s относительно базового размера шрифтаЭто важно, когда промежуточные контейнеры меняют размер шрифта. Дочерние элементы с EM будут затронуты, а те, которые используют REM, - нет.
источник
em
единицы относятся к размеру шрифта элемента, в котором они используются, (не к родительскому элементу) ] [определение W3C ] [демонстрация кода ]Единица
rem
(корень em) обозначает размер шрифта корневого элемента. В документе HTML корневым элементом являетсяhtml
элемент. Поддержка браузера по-прежнему ограничена.источник
В то время как em относится к размеру шрифта своего прямого или ближайшего родителя, rem только относительно размера шрифта html (корневого).
em дает возможность управлять областью дизайна. Например, масштабируйте шрифт в этой конкретной области относительно. rem дает возможность легко масштабировать шрифт по всей странице.
источник
Вот пример.
divs
размер сrem
изменением , как мы изменитьfont-size
частьhtml
элемента. В то время как те , размером сem
единственным изменением , как мы изменитьfont-size
изdiv
.$(function() { var htmlSize = $('input#html'); htmlSize.change(function() { $('html').css('font-size', htmlSize.val() + 'px'); }); var divSize = $('input#div'); divSize.change(function() { $('div').css('font-size', divSize.val() + 'px'); }); });
* { float: left; font-size: 20px; margin:2px; } label { clear:both; } div { border: thin solid black; } div.rem1 { width:4rem; height: 4rem; clear: both; } div.rem2 { width: 3rem; height: 3rem; } div.em1 { width: 4em; height: 4em; clear: both; } div.em2 { width: 3em; height: 3em; }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <label>Change html font-size <input id="html" type='number' value="20" min="18" max="30" /> </label> <div class="rem rem1">rem</div> <div class="rem rem2">rem</div> <label>Change div font-size <input id="div" type='number' value="20" min="18" max="30" /> </label> <div class="em em1">em</div> <div class="em em2">em</div>
источник
В основном em относится к ближайшему родительскому элементу в CSS, а rem относится к родительскому элементу страницы, который обычно является тегом html ...
Вы четко увидите разницу, если запустите приведенный ниже css и как родитель влияет на это:
html { font-size: 16px; } .lg-font { font-size: 30px; } p.rem { font-size: 1rem; } p.em { font-size: 1em; }
<div class="lg-font"> <p class="em">Hello World - em</p> </div> <div class="lg-font"> <p class="rem">Hello World - rem</p> </div>
источник
Резюме:
rem
:CSS
единица измерения относительно размера шрифтаhtml
элемента.em
:CSS
единица измерения относительно размера шрифта родительского элемента.Пример:
.element { width: 10rem; height: 10rem; background-color: green; font-size: 5px; } .innerElement { width: 10em; height: 10em; background-color: blue; }
<div class="element"> <div class="innerElement"></div> </div>
В приведенном выше примере размер зеленого квадрата составляет 160 на 160 пикселей (если у вас нет браузера по умолчанию at
16px
). Это происходит потому , что браузер по умолчанию вhtml
элементеfont-size
есть16px
и10rem
*16px
= 160.Внутренний квадрат
10em
большой. Поскольку его родительским элементом является5px
квадрат, это 5em *10px
=50px
.Чем это полезно:
Установив для всех устройств
rem
следующие преимущества:rem
будут соответственно масштабироваться.16px
наше приложение будет масштабироваться в соответствии с размером шрифта, выбранным пользователем.источник
rem, em и px - разные единицы размера шрифта в css.
em em равно вычисленному размеру шрифта родительского элемента. Пример: элемент div, определенный с font-size: 16px, его дочерние элементы 1em = 16px.
Значения rem rem относятся к корневому элементу html. Пример: Если размер шрифта корневого элемента составляет 16 пикселей, 1 rem = 16 пикселей для всех элементов.
Ссылка: https://medium.com/code-better/css-units-for-font-size-px-em-rem-79f7e592bb97
источник
https://stackoverflow.com/a/13941345/9093112 - это лучший ответ, но я хочу только добавить
Default browser size is 16px = 1em = 1 rem
источник
em и rem являются относительными единицами на основе шрифтов, и использование em для шрифтов или длины отличается, поэтому и em, и rems основаны на шрифтах, но разница между ними в том, что ems использует родительский или текущий элемент в качестве ссылки, в то время как rems используйте размер корневого шрифта как ссылку.
Если мы хотим использовать em для font-sizes, тогда ссылка - это просто размер шрифта, вычисленный родителями, аналогично тому, что происходит с процентами.
В приведенном ниже примере размер шрифта три em в дочернем элементе заголовка дает 72 пикселя просто потому, что это в три раза больше размера родительского шрифта, который составляет (150/100) * 16 = 24 пикселей. Что касается длины, она немного другая. Заполнение 2em в заголовке, поскольку это измерение длины, использует размер шрифта текущего элемента в качестве ссылки, и мы уже знаем, что это 24 пикселя, поэтому 2em приведет к 48-пиксельному отступу, понятно? Это тонкая разница, но важная. Когда вы используете em, если это для шрифтов, ссылка является родительской, а для длины ссылка является текущим элементом.
html,body{ font-size:16px; width:80vw; } header{ font-size:150%; padding 2em; margin-bottom:10rem; height:90vh; widht 1000px; } header-child{ font-size:3em; padding:10%; }
Что касается rem, он фактически работает одинаково как для размера, так и для длины шрифта, потому что он всегда просто использует размер корневого шрифта в качестве ссылки. Это означает, что заполнение 10 rem, которое у нас есть, приведет к 160 пикселям, потому что размер корневого шрифта равен 16.
источник
В относительных единицах em размер шрифта измеряется на основе ближайшего родительского размера шрифта, но если размер шрифта не определен ни для одного из родительских элементов, то по умолчанию размер шрифта будет определяться в соответствии с корневым элементом html.
Бэр относительные единицы вычисляется только корневой элемент HTML , таким образом, размер шрифта родительского элемента не влияет на его
источник
Единицы измерения CSS: em , rem оба относительно размера их родительского фасада. Размер будет меняться в зависимости от размера шрифта Родителя. Пример:
rem : 100% размера шрифта корневого элемента.
em : 100% размера родительского шрифта.
источник