Каков контекст ЭМ?
в этом примере:
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
илиheight
to и др...в следующей статье описывается использование и контекст
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
em
unit обозначает размер шрифта элемента, за исключением случаев, когда используется в значении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.