Каков контекст ЭМ?
в этом примере:
CSS
h1 { font-size: 2em; }
.smaller { font-size: 0.5em; }
HTML
<h1>Hi, I am a <span class="smaller">toad</span></h1>
будет ли слово "жаба" 0,5 раза 16px (стандартный размер шрифта браузера) или это будет 0,5 раза 2em (размер шрифта h1)?
4 ответа:
все равно вычисляемые значение свойства 'font-size' элемента, на котором он используется. Наследование выполняется вниз по дереву документов.
чтобы ответить на ваш вопрос, это будет в 0,5 раза больше 2em, что, в свою очередь, будет в 2 раза больше вычисленного размера шрифта родителя h1. фух.
также важно отметить, что если вы используете
emна других свойствах CSS, например,widthилиheightрезультат будет вычисляется из вычисленногоfont-sizeлюбого элемента, который вы применяетеwidthилиheightto и др...в следующей статье описывается использование и контекст
emблок довольно хорошо, на мой взгляд, наряду с некоторыми другими материалами для чтения и ресурсов...remединицы могут вас заинтересовать несколько также.
- http://www.impressivewebs.com/understanding-em-units-css/
- http://snook.ca/archives/html_and_css/font-size-with-rem
- http://caniuse.com/rem
вы также можете проверить эту скрипку, чтобы увидеть, как она действует немного яснее:
The
emunit обозначает размер шрифта элемента, за исключением случаев, когда используется в значенииfont-sizeСвойства, где оно обозначает размер шрифта родительского элемента. В этом смысле в представленном случае контекст является родительским элементом.в представленном случае размер шрифта слова "жаба", таким образом, равен размеру шрифта родителя
h1. Никакого конкретного значения можно сделать вывод из приведенных данных.когда шрифт размеры вычисляется, размер шрифта родителя
h1был вычислен, когда эта конструкция будет рассматриваться; назовем его s. Сначала размер шрифтаh1вычисляется, умножая s (размер шрифта родителя) на 2. Тогда размер шрифтаspanэлемент вычисляется, умножая размер шрифта его родителя на 0,5, что дает s. Теоретически ошибки округления могут вызвать минимальное отклонение в таких процессах, но умножение на 2 и 0,5 можно считать точными в компьютерах.
Это будет .5 раз 2em элемента h1 в контексте.
чтобы заставить его быть относительно 16px, вам нужно будет сначала установить родительский элемент h1 на размер шрифта 16px.
.обертка{размер шрифта: 16px;} h1 { размер шрифта: 2em; } .меньше { размер шрифта: 0.5 em;}
<div class="wrapper"><h1>Hi, I am a <span class="smaller">toad</span></h1></div>Так что в данном случае,
- обертка имеет размер шрифта 16px
- Н1 имеет шрифт-размер 2ем на 16px и
- span.меньший имеет размер шрифта 1em (из. обертка наследуется от h1 (.5em из 2em)) 16px
обратите внимание, что em является относительной мерой из контекста, которая номинально основана на высоте M символов в текущем шрифте. Для всех намерений тогда h1 имеет размер 32px и диапазон.меньший имеет размер 16px.
это зависит от размера пикселя родительского элемента. Если размер пикселя родительского элемента равен 16px
.5emбудет равна половине вашего базового пикселя, так что это будет8pxи2emдля h1 будет равно32px.все зависит от того, как вы настроили размер пикселя родительского элемента в вашем CSS.