- Что такое em?
- Что такое rem?
- Ладно, что дальше? вернемся к em.
- Rem’ы или em’ы?
- Абревиатуры
- Единицы измерения: px, em, rem и другие
- Еще один момент
- Замена всем отрицательным словам
- Используем только em’ы для создания элемента заголовка
- Используем только rem’ы для создания элемента заголовка
- Компоненты на сетке
- Отбрасывание g в ing
- Примеры
- Путь второй. свойства лишь некоторых внутренних элементов масштабируются вместе со значением font-size компонента.
- Путь первый. свойства всех внутренних элементов масштабируются вместе со значением font-size компонента
- Разговорные формы и сокращения в английском языке
- Сленговые
- Подведем итоги
Что такое em?
Википедия говорит нам:
em — в типографике относительная единица длины, равная размеру текущего шрифта
Это утверждение не имеет смысла в вебе, так как мы не используем размер точки (point-size). Но имеет смысл, если мы заменим размер точки на размер шрифта (font-size).
Это значит, что: 1em = 20px в том случае, когда у css-селектора прописано правило font-size: 20px;
h1 { font-size: 20px } /* 1em = 20px */
p { font-size: 16px } /* 1em = 16px */Единица em может использоваться для того, чтобы задавать размеры шрифтов. По факту, использование относительных величин, например, em, для font-size, является хорошей практикой.
h1 { font-size: 2em } /* Что это вообще означает?! */Какой на самом деле font-size у h1?
Нам придется взглянуть на родительский элемент, чтобы высчитать размер шрифта у этого h1. Допустим, что родительский элементом является html, и его font-size установлен в 16px.
Следуя этому, мы можем увидеть, что высчитанное значение h1 составляет 32px, или 2 * 16px.
html { font-size: 16px }
h1 { font-size: 2em } /* 16px * 2 = 32px */На самом деле, плохая затея устанавливать font-size для html в пикселях (px), так как тем самым мы переопределяем установки браузера пользователя.
Заместо этого вы можете выбрать проценты в качестве значения font-size, или просто не задавайте его в html.
Заметка: font-size будет установлен в 100%, если вы сами его не задали.
html { font-size: 100% } /* это значит, что по умолчанию размер шрифта будет 16px*/Для большинства пользователей (и браузеров), размер шрифта в 100% будет по умолчанию выдавать 16px до тех пор, пока они его не поменяют в настройках своего браузера. Хотя редко кто подобным занимается.
Что такое rem?
Rem — это корневой em (Root Em). Он создан, чтобы облегчить вычислительные проблемы, с которыми многие иногда сталкиваются.
Это единица типографики, равная корневому (базовому) значению font-size. Это значит, что 1rem всегда будет равен значению font-size, которое было определено в html.
Ладно, что дальше? вернемся к em.
Em также используется, чтобы задать значения для других свойств
, в дополнение к font-size.
marginpadding
являются двумя из тех свойств, которые измеряются в em’ах.
Вот где большинство людей путается со значениями em.
Rem’ы или em’ы?
Это очень спорный вопрос.
Некоторые разработчики полностью избегают использование rem, утверждая, что использование этих единиц измерения делают их компоненты менее модульными. Другие разработчики использут их для всего, предпочитая ту простоту, что они предоставляют.
Как ни странно, но я все-таки попался в ловушку, используя em’ы и rem’ы в своей работе на разных этапах разработки. Я был в восторге от того, как em’ы помогали мне в создании модульных компонентов, но я терпеть не мог всех тех сложностей, что они привносили в мой код.
Оказывается, у em и rem существуют как сильные, так и слабые стороны. И их нужно использовать по-разному, в зависимоти от обстоятельств.
Как? У меня есть два простых правила:
- Задавай значения в em, если свойства масштабируются относительно font-size;
- Во всех остальных случаях задавай значения в rem.
Стало немного проще? Что ж, давайте рассмотрим написание простого компонента (пусть это будет заголовок), используя и em’ы и rem’ы, и вы сами увидите в действии эти два правила.
Абревиатуры
LOL — Laugting Out Loud (громко смеяться)
OMG — Oh my God — О, Боже
WTF — What the fuck? — Что за фигня?
RIP — Rest in peace — Покойся с миром
BTW — By the way — Кстати
RTFL — Rolling on the floor laughing — Катаюсь по полу со смеха
ATM — At the moment — В данный момент
BRB — Be right back — Вернусь
Featuring — feat. — Ft (в содействии, при присутствии)
Versus — Vs. (против)
Единицы измерения: px, em, rem и другие
В этом очерке я постараюсь не только рассказать о различных единицах измерения, но и построить общую картину – что и когда выбирать.
Пиксель px – это самая базовая, абсолютная и окончательная единица измерения.
Количество пикселей задаётся в настройках разрешения экрана, один px – это как раз один такой пиксель на экране. Все значения браузер в итоге пересчитает в пиксели.
Пиксели могут быть дробными, например размер можно задать в 16.5px. Это совершенно нормально, браузер сам использует дробные пиксели для внутренних вычислений. К примеру, есть элемент шириной в 100px, его нужно разделить на три части – волей-неволей появляются 33.333...px. При окончательном отображении дробные пиксели, конечно же, округляются и становятся целыми.
Для мобильных устройств, у которых много пикселей на экране, но сам экран маленький, чтобы обеспечить читаемость, браузер автоматически применяет масштабирование.
Существуют также «производные» от пикселя единицы измерения: mm, cm, pt и pc, но они давно отправились на свалку истории.
Вот, если интересно, их значения:
1mm(мм) =3.8px1cm(см) =38px1pt(типографский пункт) =4/3 px1pc(типографская пика) =16px
Так как браузер пересчитывает эти значения в пиксели, то смысла в их употреблении нет.
В реальной жизни сантиметр – это эталон длины, одна сотая метра. А пиксель может быть разным, в зависимости от экрана.
Но в формулах выше под пикселем понимается «сферический пиксель в вакууме», точка на «стандартизованном экране», характеристики которого описаны в спецификации.
Поэтому ни о каком соответствии cm реальному сантиметру здесь нет и речи. Это полностью синтетическая и производная единица измерения, которая не нужна.
1em – текущий размер шрифта.
Можно брать любые пропорции от текущего шрифта: 2em, 0.5em и т.п.
Размеры в em – относительные, они определяются по текущему контексту.
Например, давайте сравним px с em на таком примере:
24 пикселей – и в Африке 24 пикселей, поэтому размер шрифта в <div> одинаков.
А вот аналогичный пример с em вместо px:
Так как значение в em высчитывается относительно текущего шрифта, то вложенная строка в 1.5 раза больше, чем первая.
Выходит, размеры, заданные в em, будут уменьшаться или увеличиваться вместе со шрифтом. С учётом того, что размер шрифта обычно определяется в родителе, и может быть изменён ровно в одном месте, это бывает очень удобно.
Что такое «размер шрифта»? Это вовсе не «размер самой большой буквы в нём», как можно было бы подумать.
Размер шрифта – это некоторая «условная единица», которая встроена в шрифт.
Она обычно чуть больше, чем расстояние от верха самой большой буквы до низа самой маленькой. То есть, предполагается, что в эту высоту помещается любая буква или их сочетание. Но при этом «хвосты» букв, таких как р, g могут заходить за это значение, то есть вылезать снизу. Поэтому обычно высоту строки делают чуть больше, чем размер шрифта.
Проценты %, как и em – относительные единицы.
Когда мы говорим «процент», то возникает вопрос – «Процент от чего?»
Как правило, процент будет от значения свойства родителя с тем же названием, но не всегда.
Это очень важная особенность процентов, про которую, увы, часто забывают.
Отличный источник информации по этой теме – стандарт, Visual formatting model details.
Вот пример с %, он выглядит в точности так же, как с em:
В примере выше процент берётся от размера шрифта родителя.
А вот примеры-исключения, в которых % берётся не так:
margin-left- При установке свойства
margin-leftв%, процент берётся от ширины родительского блока, а вовсе не от егоmargin-left. line-height- При установке свойства
line-heightв%, процент берётся от текущего размера шрифта, а вовсе не отline-heightродителя. Детали поline-heightи размеру шрифта вы также можете найти в статье Свойства font-size и line-height. width/height- Для
width/heightобычно процент от ширины/высоты родителя, но приposition:fixed, процент берётся от ширины/высоты окна (а не родителя и не документа). Кроме того, иногда%требует соблюдения дополнительных условий, за примером – обратитесь к главе Особенности свойства height в %.
Итак, мы рассмотрели:
px– абсолютные, чёткие, понятные, не зависящие ни от чего.em– относительно размера шрифта.%– относительно такого же свойства родителя (а может и не родителя, а может и не такого же – см. примеры выше).
Может быть, пора уже остановиться, может этого достаточно?
Э-э, нет! Не все вещи делаются удобно.
Вернёмся к теме шрифтов. Бывают задачи, когда мы хотим сделать на странице большие кнопки «Шрифт больше» и «Шрифт меньше». При нажатии на них будет срабатывать JavaScript, который будет увеличивать или уменьшать шрифт.
Вообще-то это можно сделать без JavaScript, в браузере обычно есть горячие клавиши для масштабирования вроде Ctrl , но они работают слишком тупо – берут и увеличивают всю страницу, вместе с изображениями и другими элементами, которые масштабировать как раз не надо. А если надо увеличить только шрифт, потому что посетитель хочет комфортнее читать?
Какую единицу использовать для задания шрифтов? Наверно не px, ведь значения в px абсолютны, если менять, то во всех стилевых правилах. Вполне возможна ситуация, когда мы в одном правиле размер поменяли, а другое забыли.
Следующие кандидаты – em и %.
Разницы между ними здесь нет, так как при задании font-size в процентах, эти проценты берутся от font-size родителя, то есть ведут себя так же, как и em.
Вроде бы, использовать можно, однако есть проблема.
Попробуем использовать этот подход для <li>.
Протестируем на таком списке:
Пока это обычный вложенный список.
Теперь уменьшим размер шрифта до 0.8em, вот что получится:
Проблема очевидна. Хотели, как лучше, а получилось… Мелковато. Каждый вложенный <li> получил размер шрифта 0.8 от родителя, в итоге уменьшившись до нечитаемого состояния. Это не совсем то, чего мы бы здесь хотели.
Можно уменьшить размер шрифта только на одном «корневом элементе»… Или воспользоваться единицей rem, которая, можно сказать, специально придумана для таких случаев!
Единица rem задаёт размер относительно размера шрифта элемента <html>.
Как правило, браузеры ставят этому элементу некоторый «разумный» (reasonable) размер по умолчанию, который мы, конечно, можем переопределить и использовать rem для задания шрифтов внутри относительно него:
Получилось удобное масштабирование для шрифтов, не влияющее на другие элементы.
Элементы, размер которых задан в rem, не зависят друг от друга и от контекста – и этим похожи на px, а с другой стороны они все заданы относительно размера шрифта <html>.
Единица rem не поддерживается в IE8-.
Во всех современных браузерах, исключая IE8-, поддерживаются новые единицы из черновика стандарта CSS Values and Units 3:
vw– 1% ширины окнаvh– 1% высоты окнаvmin– наименьшее из (vw,vh), в IE9 обозначаетсяvmvmax– наибольшее из (vw,vh)
Эти значения были созданы, в первую очередь, для поддержки мобильных устройств.
Их основное преимущество – в том, что любые размеры, которые в них заданы, автоматически масштабируются при изменении размеров окна.
Этот текст написан с размером `5vh`.
Вы сможете легко увидеть, как работает vh, если поменяете высоту окна браузера. Текст выше будет расти/уменьшаться.
Мы рассмотрели единицы измерения:
px– абсолютные пиксели, к которым привязаны и потому не нужныmm,cm,ptиpc. Используется для максимально конкретного и точного задания размеров.em– задаёт размер относительно шрифта родителя, можно относительно конкретных символов:"x"(ex) и"0"(ch), используется там, где нужно упростить масштабирование компоненты.rem– задаёт размер относительно шрифта<html>, используется для удобства глобального масштабирования: элементы которые планируется масштабировать, задаются вrem, а JS меняет шрифт у<html>.%– относительно такого же свойства родителя (как правило, но не всегда), используется для ширин, высот и так далее, без него никуда, но надо знать, относительно чего он считает проценты.vw,vh,vmin,vmax– относительно размера экрана.
Еще один момент
Так как рекомендуется использовать лишь несколько размеров типографики, я часто абстрагирую свойство font-size от компонента. Таким образом, я могу быть уверен, что моя типографика останется одинаковой во всех компонентах.
Замена всем отрицательным словам
Ain’t — is not, are not, am not, will not, have not, has not
Используем только em’ы для создания элемента заголовка
Код реализации заголовка на em’ах не многим отличается от кода на rem’ах, с которым уже познакомились. Все, что нам нужно — это заменить rem’ы на em’ы:
.header { font-size: 1em; padding: 0.5em 0.75em; background: #7F7CFF;
}
.header--large { font-size: 2em;
}Оба, .header и .header—large будут выглядеть точно также, как их двойники на rem’ах.
То, что нужно?
Не-а!
Крайне маловероятно, что ваш сайт будет содержать лишь один элемент заголовка и больше ничего. Нужно рассмотреть как он взаимодействует с другими элементами.
Как правило, эти элементы идут до или после заголовка, как тут:

Заголовки имеют разные связи с другими элементами
Разметка для этого блока будет такой:
Используем только rem’ы для создания элемента заголовка
Скажем, у вас есть элемент заголовка
h2
, который выглядит вот так:
Привет! Я — заголовок!
Стили заголовка должны быть подобны нижеуказанным, если вы указываете все в rem:
.header { font-size: 1rem; padding: 0.5rem 0.75rem; background: #7F7CFF;
}Все идет по плану.
Далее, давайте создадим заголовок побольше, ведь на одной странице могут располагаться элементы разных размеров.Когда мы будем это делать, давайте попробуем унаследовать настолько много стилей, насколько это возможно.
Разметка нашего второго заголовка будет выглядеть как-то так:
Компоненты на сетке
Прежде, чем мы продолжим, давайте объединим наш заголовок и параграфы в единый компонент:
Отбрасывание g в ing
Somethin’, Doin’, Goin’
’bout = About
Примеры
I am — I’m (I’m (= I am) already here. — Я уже здесь.)I have — I’ve (I’ve (= I have) seen that movie several times. — Я смотрел этот фильм несколько раз.)I will — I’ll (I’ll (= I will) deal with this. — Я позабочусь об этом.)I had / I would — I’d (I’d (= I had) done it by the time you came.
— Я сделал это к тому времени, когда ты пришел. / I promised you I’d (= I would) do it. — Я пообещал тебе, что сделаю это.You are — You’re (You’re (= you are) one of the best students in this class. — Ты один из лучших студентов в этом классе.)You have — You’ve (You’ve (= you have) been such a good friend to me.
— Ты был мне таким хорошим другом.)You will — You’ll (You’ll (= you will) see him soon enough. — Ты встретишься с ним довольно скоро.)You had / you would — You’d (You passed the test because you’d (= you had) prepared for it. — Ты сдал контрольную работу потому, что готовился к ней заранее.
/ You’d (= you would) like it, I’m sure. — Я уверен, тебе бы это понравилось.)He is / he has — He’s (He’s (= he is) a very talented actor. — Он — очень талантливый актер. / He’s (= he has) never lied to us. — Он никогда нам не лгал.)He will — He’ll (He’ll (= he will) show up, he is just running a little late.
— Он придет, он лишь немного запаздывает.)He had / he would — He’d (He’d (= he had) helped me a lot to finish the work by your arrival. — Он помог мне закончить работу до твоего прихода. / He’d (= he would) be very glad to contribute. — Он был бы очень рад помочь.)
She is / she has — She’s (She’s (= she is) standing by the window. — Она стоит у окна. / She’s (= she has) got a lot of money. — У нее много денег.)She will — She’ll (She’ll (= she will) come over to our house tonight. — Сегодня вечером она придет к нам.)
She had / she would — She’d (She’d (= she had) called me before she came. — Она позвонила перед тем, как пришла. / She said that she’d (= she would) give me a call during the lunch-break. — Она сказала, что позвонит мне во время перерыва на обед.)
It is / it has — It’s (It’s (= it is) hot today. — Сегодня жарко. / It’s (= it has) never been so hot. — Так жарко еще никогда не было.)We are — We’re (We’re (= we are) coming, we’re almost there. — Мы идем, почти уже пришли.)We have — We’ve (We’ve (= we have) tried to get a hold of you, but failed.
— Мы пытались связаться с тобой, но не смогли.)We will — We’ll (We’ll (= we will) watch over the kids. — Мы приглядим за детьми.)We had / we would — We’d (We’d (= we had) traveled from Germany to Spain. — Мы путешествовали из Германии в Испанию.
/ We’d (= we would) be much obliged if you helped us. — Мы были бы очень признательны, если бы вы нам помогли.)They are — They’re (They’re (= they are) going to play tennis. — Они собираются играть в теннис.)They have — They’ve (I hear that they’ve (= they have) been told everything.
— Я слышал, что им все рассказали.)They will — They’ll (I hope they’ll (= they will) be on time. — Надеюсь, что они не опоздают.)They had / they would — They’d (They’d (= they had) done their work long before I started doing mine. — Они сделали свою работу задолго до того, как я начал свою.
/ I talked to them and they promised they’d (= they would) do everything in their power. — Я поговорил с ними, и они пообещали, что сделаю все возможное.)There is / there has — There’s (There’s (=there is) little time left. — Осталось мало времени.
/ There’s (= there has) been a very nice chinese restaurant down the street before, but now it’s gone. — Раньше на этой улице был очень хороший китайский ресторан, но сейчас его нет.)There will — There’ll (They say there’ll (= there will) be a new school in our district.
— Говорят, в нашем районе появится новая школа.)There had / there would — There’d (There’d (= there had) been many people here before. — Раньше здесь было много людей. / I knew there’d (= ther would) be a way. — Я знал, что появится какой-нибудь выход.)
Сохранить эту страницу в социальной сети:
| Просмотров 36074 |
Путь второй. свойства лишь некоторых внутренних элементов масштабируются вместе со значением font-size компонента.
Первый случай несложно объснить. Недостатком, однако, является то, что вам придется придерживаться вашей модульной сетки (
Прим. пер.: что это такое, можете почитать тут
), вертикальным ритмам (
Прим. пер.: что это такое, можете почитать тут
) и вы должны быть уверены, что все компоненты имеют одинаковый размер в одно и то же время (особенно, когда вы делаете адаптивные сайты).
Иногда требуется изменить небольшой участок компонента, не изменяя размеров всего остального.
Например, вам нужно изменить font-size заголовков при большей видимой области (viewport).

Только заголовки меняются в размере, когда меняется видимая область
Давайте опишем стили данного примера, взяв за основу стили, которые мы описали выше:
Путь первый. свойства всех внутренних элементов масштабируются вместе со значением font-size компонента
Давайте начнем с примера, чтобы увидеть, как выглядит такой компонент:
Заметили, как font-size, margin и padding всех элементов внутри компонента изменяются в одно и то же время?
Если ваш компонент ведет себя таким же образом при изменении размеров, то вам нужно все размеры указывать в em’ах. То есть код становится таким:
Разговорные формы и сокращения в английском языке
Добавьте страницу на экран смартфона
Американцы, говоря о своём английском языке, называют себя ленивой нацией, имея ввиду, что они не только все упрощают, но также очень невнятно и расслабленно произносят многие звуки, таким образом и появляются упрощённые (сокращённые) формы в речи носителей языка. По-английски их часто называют reductions.
Часто в разговорной речи, (а также в текстах песен, и даже в литературных произведениях) мы встречаем слова: wanna, gonna, gotta и др. Особенно они характерны для американского варианта английской разговорной речи. Но и строгие британцы не гнушаются ими в свободное от работы время 🙂
Так, wanna – это не что иное, как want to (хотеть). Например:
What you wanna do now? – Что ты хочешь (или будешь) делать сейчас?
Сравните: What do you want to do now?
Обратите внимание, что в первом варианте упрощается не только сказуемое, но и исчезает вспомогательный глагол, т.е. полное несоблюдение всяких правил. Но это только цветочки.
Gonna используется вместо going to (собираться что-либо сделать). Если вы ещё помните – это одна из форм выражения будущего времени. Например:
What you gonna do now? – Что ты собираешься сейчас делать?
Сравните: What are you going to do now?
Gotta, как правило, употребляется вместо got to (должен, обязан):
I’ve gotta phone my mum right now. – Я должен (должна) позвонить маме прямо сейчас.
Сравните: I have got to phone my mum right now.
Запомните ещё несколько часто используемых в разговорной речи сокращений, о которых, почему-то редко вспоминают в учебниках:
em (‘em) = them – их, им
gimme = give me – дай мне
lemme = let me – позволь (разреши-те) мне
whassup = what is up или чаще what’s up – что случилось
kinda = kind of – вроде, как будто, немного
D’jever (jever) = did you ever – ты когда-нибудь…
Также часто в устной речи и чуть реже на письме, вместо окончания -ing произносят и пишут просто -in’.
И, как водится, несколько примеров:
Let ’em know that I’ll be waitin’ (Let them know that I will be waiting) – Скажи им что я буду ждать.
Whatser name? (What is her name?) – Как её зовут?
I’m kinda busy. (I am kind of busy.) – Я немного занят.
Gimme some more time. (Give me some more time.)– Дай мне ещё немного времени.
Whaddayasay? (What did you say?) – Что ты сказал?
Это, разумеется, далеко не полный список сокращённых форм и выражений в английском языке, здесь приведены лишь самые употребительные. Конечно, в беглой речи нет времени на долгие построения предложений и размышления, но следует ещё раз подчеркнуть, что это – разговорная речь. Если вам придётся общаться с носителем, особенно на официальных встречах или переговорах, не увлекайтесь сокращениями, а лучше откажитесь от них совсем.
Такой стиль подойдёт скорей для общения за стойкой бара или в непринуждённой обстановке какой-нибудь вечеринки.
Впрочем, в повседневной жизни Америки, – на работе в кинотеатре или магазине Вы скорее услышите подобные сокращения, чем чистую литературную речь. А употреблять их лично Вам или нет, – решайте сами. Это в первую очередь зависит от Вашей уверенности в себе, раскрепощённости, и от того, каких целей Вы хотите достичь в разговоре.
К оглавлению ·
Ключи к упражнениям · Слушать
· Грамматика в халатике
Сленговые
Want to = Wanna
Going to = Gonna, Gon
Give me = Gimme
Got to = Gotta
Don’t know = Dunno
Lot of = Lotta
You, your, you’re — ya
Because — ’cause, cuz, cos
Alright — Aight
You all — Y’all
Come on — C’mon
Them — ’em
Got you — I gotcha
Kind of — Kinda
Trying to — Tryna
Little — Lil’
Player — Playa
Dollar — Dolla
Never — Neva
Подведем итоги
Что же использовать, rem или em? Я думаю, что данный вопрос не совсем корректен. И rem и em имеют свои сильные и слабые стороны, и их можно использовать вместе, — это поможет вам в написании простых, модульных компонентов!
Теперь касательно вас! Чью сторону вы примите в этом споре? Я бы с радостью почитал в комментариях ниже, что вы думаете по этому поводу:)


