Единицы измерения: px, em, rem и другие
В этом очерке я постараюсь не только рассказать о различных единицах измерения, но и построить общую картину – что и когда выбирать.
Пиксели: px
Пиксель px – это самая базовая, абсолютная и окончательная единица измерения.
Количество пикселей задаётся в настройках разрешения экрана, один px – это как раз один такой пиксель на экране. Все значения браузер в итоге пересчитает в пиксели.
Пиксели могут быть дробными, например размер можно задать в 16.5px . Это совершенно нормально, браузер сам использует дробные пиксели для внутренних вычислений. К примеру, есть элемент шириной в 100px , его нужно разделить на три части – волей-неволей появляются 33.333. px . При окончательном отображении дробные пиксели, конечно же, округляются и становятся целыми.
Для мобильных устройств, у которых много пикселей на экране, но сам экран маленький, чтобы обеспечить читаемость, браузер автоматически применяет масштабирование.
Достоинства
- Главное достоинство пикселя – чёткость и понятность
Недостатки
- Другие единицы измерения – в некотором смысле «мощнее», они являются относительными и позволяют устанавливать соотношения между различными размерами
Давно на свалке: mm , cm , pt , pc
Существуют также «производные» от пикселя единицы измерения: mm , cm , pt и pc , но они давно отправились на свалку истории.
Вот, если интересно, их значения:
- 1mm (мм) = 3.8px
- 1cm (см) = 38px
- 1pt (типографский пункт) = 4/3 px
- 1pc (типографская пика) = 16px
Так как браузер пересчитывает эти значения в пиксели, то смысла в их употреблении нет.
Почему в сантиметре cm содержится ровно 38 пикселей?
В реальной жизни сантиметр – это эталон длины, одна сотая метра. А пиксель может быть разным, в зависимости от экрана.
Но в формулах выше под пикселем понимается «сферический пиксель в вакууме», точка на «стандартизованном экране», характеристики которого описаны в спецификации.
Поэтому ни о каком соответствии cm реальному сантиметру здесь нет и речи. Это полностью синтетическая и производная единица измерения, которая не нужна.
Относительно шрифта: em
1em – текущий размер шрифта.
Можно брать любые пропорции от текущего шрифта: 2em , 0.5em и т.п.
Размеры в em – относительные, они определяются по текущему контексту.
Например, давайте сравним px с em на таком примере:
Страусы Живут также в Африке
24 пикселей – и в Африке 24 пикселей, поэтому размер шрифта в одинаков.
А вот аналогичный пример с em вместо px :
Страусы Живут также в Африке
Так как значение в em высчитывается относительно текущего шрифта, то вложенная строка в 1.5 раза больше, чем первая.
Выходит, размеры, заданные в em , будут уменьшаться или увеличиваться вместе со шрифтом. С учётом того, что размер шрифта обычно определяется в родителе, и может быть изменён ровно в одном месте, это бывает очень удобно.
Что такое размер шрифта?
Что такое «размер шрифта»? Это вовсе не «размер самой большой буквы в нём», как можно было бы подумать.
Размер шрифта – это некоторая «условная единица», которая встроена в шрифт.
Она обычно чуть больше, чем расстояние от верха самой большой буквы до низа самой маленькой. То есть, предполагается, что в эту высоту помещается любая буква или их сочетание. Но при этом «хвосты» букв, таких как р , g могут заходить за это значение, то есть вылезать снизу. Поэтому обычно высоту строки делают чуть больше, чем размер шрифта.
Единицы ex и ch
В спецификации указаны также единицы ex и ch, которые означают размер символа «x» и размер символа «0» .
Эти размеры присутствуют в шрифте всегда, даже если по коду этих символов в шрифте находятся другие значения, а не именно буква «x» и ноль «0» . В этом случае они носят более условный характер.
Эти единицы используются чрезвычайно редко, так как «размер шрифта» em обычно вполне подходит.
Проценты %
Проценты % , как и 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 в %.
Единица rem: смесь px и em
Итак, мы рассмотрели:
- px – абсолютные, чёткие, понятные, не зависящие ни от чего.
- em – относительно размера шрифта.
- % – относительно такого же свойства родителя (а может и не родителя, а может и не такого же – см. примеры выше).
Может быть, пора уже остановиться, может этого достаточно?
Э-э, нет! Не все вещи делаются удобно.
Вернёмся к теме шрифтов. Бывают задачи, когда мы хотим сделать на странице большие кнопки «Шрифт больше» и «Шрифт меньше». При нажатии на них будет срабатывать JavaScript, который будет увеличивать или уменьшать шрифт.
Вообще-то это можно сделать без JavaScript, в браузере обычно есть горячие клавиши для масштабирования вроде Ctrl + + , но они работают слишком тупо – берут и увеличивают всю страницу, вместе с изображениями и другими элементами, которые масштабировать как раз не надо. А если надо увеличить только шрифт, потому что посетитель хочет комфортнее читать?
Какую единицу использовать для задания шрифтов? Наверно не px , ведь значения в px абсолютны, если менять, то во всех стилевых правилах. Вполне возможна ситуация, когда мы в одном правиле размер поменяли, а другое забыли.
Следующие кандидаты – em и % .
Разницы между ними здесь нет, так как при задании font-size в процентах, эти проценты берутся от font-size родителя, то есть ведут себя так же, как и em .
Вроде бы, использовать можно, однако есть проблема.
Протестируем на таком списке:
Преобразовать Пиксели в миллиметр (px в мм):
С помощью этого калькулятора можно ввести значение для конвертации вместе с исходной единицей измерения, например, ’32 Пиксели’. При этом можно использовать либо полное название единицы измерения, либо ее аббревиатуруНапример, ‘Пиксели’ или ‘px’. После ввода единицы измерения, которую требуется преобразовать, калькулятор определяет ее категорию, в данном случае ‘Размер шрифта (CSS)’. После этого он преобразует введенное значение во все соответствующие единицы измерения, которые ему известны. В списке результатов вы, несомненно, найдете нужное вам преобразованное значение. Как вариант, преобразуемое значение можно ввести следующим образом: ’12 px в мм‘ или ’49 px сколько мм‘ или ’97 Пиксели -> миллиметр‘ или ’99 px = мм‘ или ’61 Пиксели в мм‘ или ’86 px в миллиметр‘ или ’45 Пиксели сколько миллиметр‘. В этом случае калькулятор также сразу поймет, в какую единицу измерения нужно преобразовать исходное значение. Независимо от того, какой из этих вариантов используется, исключается необходимость сложного поиска нужного значения в длинных списках выбора с бесчисленными категориями и бесчисленным количеством поддерживаемых единиц измерения. Все это за нас делает калькулятор, который справляется со своей задачей за доли секунды.
Кроме того, калькулятор позволяет использовать математические формулы. В результате, во внимание принимаются не только числа, такие как ‘(99 * 89) px’. Можно даже использовать несколько единиц измерения непосредственно в поле конверсии. Например, такое сочетание может выглядеть следующим образом: ’32 Пиксели + 96 миллиметр’ или ’36mm x 28cm x 72dm = ? cm^3′. Объединенные таким образом единицы измерения, естественно, должны соответствовать друг другу и иметь смысл в заданной комбинации.
Если поставить флажок рядом с опцией ‘Числа в научной записи’, то ответ будет представлен в виде экспоненциальной функции. Например, 2,073 599 981 130 2 × 10 25 . В этой форме представление числа разделяется на экспоненту, здесь 25, и фактическое число, здесь 2,073 599 981 130 2. В устройствах, которые обладают ограниченными возможностями отображения чисел (например, карманные калькуляторы), также используется способ записи чисел 2,073 599 981 130 2E+25. В частности, он упрощает просмотр очень больших и очень маленьких чисел. Если в этой ячейке не установлен флажок, то результат отображается с использованием обычного способа записи чисел. В приведенном выше примере он будет выглядеть следующим образом: 20 735 999 811 302 000 000 000 000. Независимо от представления результата, максимальная точность этого калькулятора равна 14 знакам после запятой. Такой точности должно хватить для большинства целей.
миллиметр (мм, Метрическая мера) → пиксель (px, Типографские единицы (США и Британия — система ATA))
Перевод величин: миллиметр (мм, Метрическая мера) → пиксель (px, Типографские единицы (США и Британия — система ATA))
Не можете найти нужную единицу?
Попробуйте поискать:
Другие варианты:
Надеемся, Вы смогли перевести все ваши величины, и Вам у нас на Convert-me.Com понравилось. Приходите снова!
! Значение единицы приблизительное.
Либо точного значения нет,
либо оно неизвестно. ? Пожалуйста, введите число. (?) Простите, неизвестное вещество. Пожалуйста, выберите что-то из списка. *** Нужно выбрать вещество.
От этого зависит результат.
Совет: Не можете найти нужную единицу? Попробуйте поиск по сайту. Поле для поиска в верхней части страницы.
Действительно ли наш сайт существует с 1996 года? Да, это так. Первая версия онлайнового конвертера была сделана ещё в 1995, но тогда ещё не было языка JavaScript, поэтому все вычисления делались на сервере — это было медленно. А в 1996г была запущена первая версия сайта с мгновенными вычислениями.
Для экономии места блоки единиц могут отображаться в свёрнутом виде. Кликните по заголовку любого блока, чтобы свернуть или развернуть его.
Слишком много единиц на странице? Сложно ориентироваться? Можно свернуть блок единиц — просто кликните по его заголовку. Второй клик развернёт блок обратно.
Преобразовать миллиметр в Пиксели (мм в px):
С помощью этого калькулятора можно ввести значение для конвертации вместе с исходной единицей измерения, например, ’85 миллиметр’. При этом можно использовать либо полное название единицы измерения, либо ее аббревиатуруНапример, ‘миллиметр’ или ‘мм’. После ввода единицы измерения, которую требуется преобразовать, калькулятор определяет ее категорию, в данном случае ‘Размер шрифта (CSS)’. После этого он преобразует введенное значение во все соответствующие единицы измерения, которые ему известны. В списке результатов вы, несомненно, найдете нужное вам преобразованное значение. Как вариант, преобразуемое значение можно ввести следующим образом: ’99 мм в px‘ или ’85 мм сколько px‘ или ’22 миллиметр -> Пиксели‘ или ’59 мм = px‘ или ’67 миллиметр в px‘ или ’86 мм в Пиксели‘ или ’85 миллиметр сколько Пиксели‘. В этом случае калькулятор также сразу поймет, в какую единицу измерения нужно преобразовать исходное значение. Независимо от того, какой из этих вариантов используется, исключается необходимость сложного поиска нужного значения в длинных списках выбора с бесчисленными категориями и бесчисленным количеством поддерживаемых единиц измерения. Все это за нас делает калькулятор, который справляется со своей задачей за доли секунды.
Кроме того, калькулятор позволяет использовать математические формулы. В результате, во внимание принимаются не только числа, такие как ‘(41 * 37) мм’. Можно даже использовать несколько единиц измерения непосредственно в поле конверсии. Например, такое сочетание может выглядеть следующим образом: ’85 миллиметр + 255 Пиксели’ или ’39mm x 99cm x 38dm = ? cm^3′. Объединенные таким образом единицы измерения, естественно, должны соответствовать друг другу и иметь смысл в заданной комбинации.
Если поставить флажок рядом с опцией ‘Числа в научной записи’, то ответ будет представлен в виде экспоненциальной функции. Например, 2,073 599 981 130 2 × 10 25 . В этой форме представление числа разделяется на экспоненту, здесь 25, и фактическое число, здесь 2,073 599 981 130 2. В устройствах, которые обладают ограниченными возможностями отображения чисел (например, карманные калькуляторы), также используется способ записи чисел 2,073 599 981 130 2E+25. В частности, он упрощает просмотр очень больших и очень маленьких чисел. Если в этой ячейке не установлен флажок, то результат отображается с использованием обычного способа записи чисел. В приведенном выше примере он будет выглядеть следующим образом: 20 735 999 811 302 000 000 000 000. Независимо от представления результата, максимальная точность этого калькулятора равна 14 знакам после запятой. Такой точности должно хватить для большинства целей.