Единицы измерения размеров

Подкаст CSS - 008: Единицы измерения

Веб — это адаптивная среда, но иногда вы хотите контролировать ее размеры, чтобы улучшить общее качество интерфейса. Хорошим примером этого является ограничение длины строк для улучшения читаемости. Как бы вы это сделали в такой гибкой среде, как веб?

В этом случае вы можете использовать единицу ch , которая равна ширине символа "0" в визуализированном шрифте при его вычисленном размере. Эта единица позволяет вам ограничить ширину текста с помощью единицы, которая разработана для определения размера текста, что, в свою очередь, обеспечивает предсказуемый контроль независимо от размера этого текста. Единица ch является одной из немногих единиц, которые полезны для определенных контекстов, таких как этот пример.

Числа

Числа используются для определения opacity , line-height и даже для значений цветовых каналов в rgb . Числа представляют собой безразмерные целые числа (1, 2, 3, 100) и десятичные числа (.1, .2, .3).

Числа имеют значение в зависимости от контекста. Например, при определении line-height число представляет отношение, если вы определяете его без поддерживающей единицы:

p {
  font-size: 24px;
  line-height: 1.5;
}

В этом примере 1.5 равно 150% от вычисленного размера шрифта в пикселях элемента p . Это означает, что если p имеет font-size 24px , высота строки будет вычислена как 36px .

Числа также могут использоваться в следующих местах:

  • При установке значений для фильтров: filter: sepia(0.5) применяет к элементу фильтр сепии 50% .
  • При установке непрозрачности: opacity: 0.5 применяется непрозрачность 50% .
  • В цветовых каналах: rgb(50, 50, 50) , где значения 0-255 приемлемы для установки значения цвета. См. урок по цвету .
  • Чтобы преобразовать элемент: transform: scale(1.2) масштабирует элемент на 120% от его первоначального размера.

Проценты

При использовании процентов в CSS вам необходимо знать, как рассчитывается процент. Например, width рассчитывается как процент от доступной ширины родительского элемента.

div {
  width: 300px;
  height: 100px;
}

div p {
  width: 50%;
}

В предыдущем примере ширина div p составляет 150px , при условии, что макет использует box-sizing: content-box .

Если вы устанавливаете margin или padding в процентах, они станут частью ширины родительского элемента , независимо от направления.

div {
  width: 300px;
  height: 100px;
}

div p {
  margin-top: 50%; /* calculated: 150px */
  padding-left: 50%; /* calculated: 150px */
}

В предыдущем примере и margin-top , и padding-left будут вычислены как 150px .

div {
  width: 300px;
  height: 100px;
}

div p {
  width: 50%; /* calculated: 150px */
  transform: translateX(10%); /* calculated: 15px */
}

Если вы задаете значение transform в процентах, оно основано на элементе с установленным преобразованием. В этом примере p имеет значение translateX 10% и width 50% . Сначала вычислите, какой будет ширина: 150px , потому что это 50% от ширины его родителя . Затем возьмите 10% от 150px , что составляет 15px .

Размеры и длина

Если вы прикрепляете единицу к числу, оно становится измерением. Например, 1rem — это измерение. В этом контексте единица, прикрепленная к числу, в спецификациях называется маркером измерения. Длины — это измерения, которые относятся к расстоянию, и они могут быть как абсолютными, так и относительными.

Абсолютные длины

Все абсолютные длины разрешаются относительно одной и той же базы, что делает их предсказуемыми, где бы они ни использовались в вашем CSS. Например, если вы используете cm для определения размера элемента, а затем печатаете, он должен быть точным, если вы сравните его с линейкой. Обратите внимание, что физические единицы, такие как cm и in , не будут надежно отображаться при этих размерах на экранах из-за различий в размерах пикселей. Физические единицы лучше всего использовать для таблиц стилей печати, где они будут более надежными.

div {
  width: 10cm;
  height: 5cm;
  background: black;
}

Если вы распечатаете эту страницу, div будет напечатан как черный прямоугольник 10x5 см. Помните, что CSS используется не только для цифрового контента, но и для стилизации печатного контента. Абсолютные длины могут быть действительно полезны при проектировании для печати.

Единица Имя Эквивалентно
см Сантиметры 1 см = 96 пикселей/2,54
мм Миллиметры 1мм = 1/10 часть 1см
В Четверть миллиметра 1Q = 1/40 часть 1 см
в Дюймы 1 дюйм = 2,54 см = 96 пикселей
ПК Пики 1шт = 1/6 часть 1дюйма
пт Очки 1 пт = 1/72 дюйма
пикс. Пиксели 1 пиксель = 1/96 дюйма

Относительные длины

Относительная длина рассчитывается относительно базового значения, как процент. Разница между ними и процентами заключается в том, что вы можете определять размеры на основе соответствующего базового размера, например, размера шрифта по умолчанию или размеров окна. Это означает, что в CSS есть такие единицы, как ch , которые используют метрики размера шрифта в качестве основы, и vw , которая основана на ширине области просмотра (окна вашего браузера). Относительные длины особенно полезны в Интернете из-за своей адаптивной природы.

Единицы измерения, зависящие от размера шрифта

CSS предоставляет полезные единицы измерения, которые соотносятся с размером элементов визуализированной типографики, например, с размером самого текста (единицы em ) или шириной символов гарнитуры (единицы ch ).

единица относительно:
em По сравнению с размером шрифта, то есть 1.5em будет на 50% больше, чем базовый размер шрифта его родителя. (Исторически, высота заглавной буквы «m»).
rem Размер шрифта корневого элемента (по умолчанию 16px ).
ex Эвристика для определения, следует ли использовать x-height, букву «x» или .5em в текущем вычисленном размере шрифта элемента.
rex ex значение корневого элемента.
cap Высота заглавных букв в текущем вычисленном размере шрифта элемента.
rcap cap значение корневого элемента.
ch Средний сдвиг символа узкого глифа в шрифте элемента (представлен глифом «0»).
rch Значение ch корневого элемента.
ic Средний сдвиг символа полной ширины глифа в шрифте элемента, представленного глифом «水» (идеограмма воды CJK, U+6C34).
ric Значение ic корневого элемента.
lh Высота строки элемента.
rlh Значение lh строки корневого элемента.

Текст, CSS 10x велик с метками для высоты надстрочного элемента, высоты подстрочного элемента и x-высоты. X-высота представляет 1ex, а 0 представляет 1ch

Единицы измерения относительно области просмотра

Вы можете использовать размеры области просмотра (окна браузера) в качестве относительной основы. Эти единицы делят доступное пространство области просмотра.

единица относительно
фольксваген 1% от ширины области просмотра. Люди используют эту единицу для крутых трюков со шрифтами, например, для изменения размера шрифта заголовка в зависимости от ширины страницы, так что когда пользователь изменяет размер, шрифт также изменяет размер.
вх 1% от высоты области просмотра. Вы можете использовать это для упорядочивания элементов в пользовательском интерфейсе, например, если у вас есть нижняя панель инструментов.
ви 1% от размера области просмотра в инлайн-оси корневого элемента. Ось относится к режимам письма. В горизонтальных режимах письма, таких как английский, инлайн-ось горизонтальна. В вертикальных режимах письма, таких как некоторые японские шрифты, инлайн-ось проходит сверху вниз.
гл.б. 1% от размера области просмотра в блочной оси корневого элемента. Для блочной оси это будет направленность языка. Такие языки, как английский, имеют вертикальную блочную ось, поскольку читатели английского языка анализируют страницу сверху вниз. Вертикальный режим письма имеет горизонтальную блочную ось.
вмин 1% от меньшего размера области просмотра.
vмакс 1% от большего размера области просмотра.
div {
  width: 10vw;
}

p {
  max-width: 60ch;
}

В этом примере div будет составлять 10% от ширины области просмотра, поскольку 1vw составляет 1% от ширины области просмотра . Элемент p имеет max-width 60ch , что означает, что он не может превышать ширину 60 символов "0" в вычисленном шрифте и размере.

Альтернативные единицы измерения относительно области просмотра

Значение единиц, относящихся к области просмотра, остается неизменным, пока размер области просмотра не меняется. Однако мобильные браузеры обычно показывают или скрывают элементы пользовательского интерфейса, чтобы показать как можно больше контента на маленьких экранах, не меняя вычисленный размер области просмотра. Вы можете использовать альтернативы единицам, относящихся к области просмотра, чтобы учесть эти изменения в видимой области.

единицы эквивалентно
lvw , lvh , lvi , lvb , lvmin , lvmax Большие единицы измерения области просмотра, относительно видимого пространства области просмотра со всеми скрытыми дополнительными элементами пользовательского интерфейса браузера. Равны невариантным единицам измерения относительно области просмотра. Не изменяются, пока не изменится размер области просмотра.
svw , svh , svi , svb , svmin , svmax Маленькие единицы области просмотра, относительно видимого пространства области просмотра со всеми видимыми дополнительными элементами пользовательского интерфейса браузера. Не изменяется, пока не изменится размер области просмотра.
dvw , dvh , dvi , dvb , dvmin , dvmax Динамические единицы измерения области просмотра, относительно текущего видимого пространства области просмотра. Изменяется по мере отображения или скрытия элементов пользовательского интерфейса браузера.

Единицы измерения, зависящие от контейнера

Вы можете использовать размеры контейнера элемента как относительную основу. Эти единицы делят доступное пространство контейнера. Они полезны внутри запросов контейнера для установки размеров шрифта на основе доступного пространства.

единицы относительно
cqw 1% от ширины контейнера.
cqh 1% от высоты контейнера.
cqi 1% от внутреннего размера контейнера.
cqb 1% от размера блока контейнера.
cqmin 1% от меньшего размера контейнера.
cqmax 1% от большего размера контейнера.

Разные единицы

Есть некоторые другие подразделения, которые были указаны для работы с конкретными типами значений.

Угловые единицы

В модуле цвета мы рассмотрели угловые единицы , которые полезны для определения значений градусов, таких как оттенок в hsl . Они также полезны для вращения элементов в функциях преобразования.

div {
  width: 150px;
  height: 150px;
  transform: rotate(60deg);
}

Используя единицу измерения угла deg , вы можете повернуть div на 90° вокруг его центральной оси.

div {
  background-image: url('a-low-resolution-image.jpg');
}

@media (-webkit-min-device-pixel-ratio: 2), (min-resolution: 192dpi) {
  div {
    background-image: url('a-high-resolution-image.jpg');
  }
}

Единицы разрешения

В предыдущем примере значение min-resolution равно 192dpi . Единица dpi означает dots per inch . Полезным контекстом для этого является обнаружение экранов с очень высоким разрешением, таких как дисплеи Retina в медиа-запросе и предоставление изображения с более высоким разрешением.

Проверьте свое понимание

Проверьте свои знания о размерах

Какие из следующих размеров являются допустимыми?

см
Сантиметры — допустимая абсолютная величина.
пользовательский интерфейс
Пользовательский интерфейс не является измерением в CSS.
в
Дюймы — допустимая абсолютная величина.
8-й
Не является измерением CSS
пикс.
Пиксели, допустимое абсолютное измерение.
ч
Единицы измерения символов, допустимая относительная размерность.
ux
Пользовательский опыт не является параметром в CSS.
Эм
Единицы измерения с буквой «М» — допустимая относительная размерность.
бывший
Буква «x» — единицы измерения, допустимая относительная размерность.

Чем отличаются абсолютные и относительные единицы?

Абсолютные значения не могут меняться, но относительные единицы могут
Абсолютные значения могут меняться, но база, на которой они рассчитываются, — нет.
Абсолютная длина рассчитывается относительно единого общего базового значения, а относительная единица сравнивается с базовым значением, которое может изменяться.
Относительные единицы являются более адаптивными и плавными из -за их контекстуальной осведомленности, но есть сила и предсказуемость в абсолютных единицах, которые могут быть основополагающими для определенных дизайнов.

Единицы измерения области просмотра являются абсолютными.

Истинный
Они могут казаться абсолютными, но они относительны по отношению к области просмотра, которая может быть iframe или webview, и не всегда отражает размер экрана устройства.
ЛОЖЬ
Они относятся к окну документа, в котором они были созданы, которое может совпадать или не совпадать с экраном устройства.

Ресурсы