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.