Тип CSS `<length>`
Базовая поддержка Широко доступно
Эта функция хорошо зарекомендовала себя и работает на многих устройствах и в различных версиях браузеров. Она доступна во всех браузерах с июля 2015 года.
<length> — это CSS тип данных, представляющий значение расстояния. Длины можно использовать во множестве свойств CSS, таких как width, height, margin, padding, border-width, font-size и text-shadow.
Примечание: Хотя значения <percentage> можно использовать в некоторых из тех же свойств, которые принимают значения <length>, сами по себе они не являются значениями <length>. См. <length-percentage>.
Синтаксис
Тип данных <length> состоит из <number>, за которым следует одна из перечисленных ниже единиц измерения. Как и для всех размерностей CSS, между числом и обозначением единицы измерения нет пробела. Указывать единицу длины необязательно, если число равно 0.
Примечание: Некоторые свойства допускают отрицательные значения <length>, а другие — нет.
Заданные и вычисленные значения
Заданное значение длины (заданная длина) представлено её величиной и единицей измерения. Вычисленное значение длины (вычисленная длина) — это заданная длина, преобразованная в абсолютную; её единица измерения не учитывается.
Для некоторых свойств, таких как border-width, outline-width, column-rule-width и outline-offset, вычисленные значения <length> округляются до целого числа пикселей устройства, чтобы обеспечить приемлемое отображение:
- Ненулевое значение меньше одного пикселя устройства округляется вверх.
- Значение больше одного пикселя устройства округляется вниз до ближайшего целого пикселя устройства.
Например, на экране с devicePixelRatio равным 3 значение border-width: 1.5px вычисляется примерно как 1.33px (округляется вниз с 4,5 до 4 пикселей устройства), а значение outline-width: 0.2px — примерно как 0.33px (округляется вверх с 0,6 до 1 пикселя устройства).
Относительные и абсолютные длины
Единицы <length> могут быть относительными или абсолютными. Относительные длины представляют собой измерение относительно некоторого другого расстояния. В зависимости от единицы измерения это расстояние может соответствовать размеру определённого символа, высоте строки или размеру области просмотра. Таблицы стилей, в которых используются относительные единицы длины, легче адаптировать для разных сред вывода.
Примечание: Дочерние элементы не наследуют относительные значения, заданные для родительского элемента; они наследуют вычисленные значения.
Относительные единицы длины
Относительные единицы длины CSS основаны на размерах шрифта, контейнера или области просмотра.
Относительные единицы длины, основанные на шрифте
Единицы длины шрифта задают значение <length> относительно размера определённого символа или атрибута шрифта, действующего для элемента или его родителя.
Примечание: Эти единицы, особенно em и корневая относительная rem, часто используются для создания масштабируемых макетов, сохраняющих вертикальный ритм страницы даже при изменении пользователем размера шрифта.
-
cap - Равно «высоте прописных» (номинальной высоте заглавных букв) шрифта элемента
font. -
ch - Представляет ширину или, точнее, ширину продвижения глифа
0(ноль, символ Юникода U+0030) вfontэлемента. Если измерить ширину глифа0невозможно или нецелесообразно, следует считать, что его ширина равна0.5em, а высота —1em. -
em - Представляет вычисленный
font-sizeэлемента. Если единица используется непосредственно в свойствеfont-size, она представляет унаследованный размер шрифта элемента. -
ex - Равна высоте строчных шрифта элемента
font. В шрифтах с буквойxэто, как правило, высота строчных букв;1ex ≈ 0.5emво многих шрифтах. -
ic - Представляет используемую ширину продвижения глифа «水» (идеограмма CJK «вода», U+6C34) из шрифта, используемого для его отображения.
-
lh - Равно вычисленному значению свойства
line-heightэлемента, к которому оно применяется, преобразованному в абсолютную длину. Эта единица позволяет рассчитывать длину на основе теоретического размера идеальной пустой строки. Однако фактический размер строковых блоков может отличаться в зависимости от их содержимого.
Относительные единицы длины, основанные на шрифте корневого элемента
Относительные единицы длины, основанные на шрифте корневого элемента, задают значение <length> относительно размера определённого символа или атрибута шрифта элемента root:
-
rcap - Равно «высоте прописных» (номинальной высоте заглавных букв) шрифта элемента root
font. -
rch - Равно ширине или ширине продвижения глифа
0(ноль, символ Юникода U+0030) в шрифте элемента rootfont. -
rem - Представляет
font-sizeкорневого элемента (обычно<html>). При использовании в свойствеfont-sizeкорневого элемента представляет его начальное значение. По умолчанию браузеры часто используют16px, но пользовательские настройки могут изменить это значение. -
rex - Равна высоте строчных шрифта элемента root
font. -
ric - Равно значению единицы
icдля шрифта элемента root. -
rlh - Равно значению единицы
lhдля шрифта элемента root. Эта единица позволяет рассчитывать длину на основе теоретического размера идеальной пустой строки. Однако фактический размер строковых блоков может отличаться в зависимости от их содержимого.
Относительные единицы длины, основанные на области просмотра
Единицы длины в процентах от области просмотра основаны на четырёх её размерах: малом, большом, динамическом и стандартном. Возможность учитывать разные размеры области просмотра появилась в ответ на динамическое раскрытие и сворачивание интерфейсов браузера, которые скрывают или показывают расположенное под ними содержимое.
- Единицы малого размера области просмотра
-
Если требуется учитывать минимальный размер области просмотра при динамическом раскрытии интерфейсов браузера, следует использовать малый размер области просмотра. Он позволяет содержимому полностью заполнять область просмотра, когда интерфейсы браузера раскрыты. Однако при их сворачивании могут появиться пустые области.
Например, элемент, размер которого задан в единицах, основанных на малом размере области просмотра, будет идеально заполнять экран, и его содержимое не будет перекрыто, когда показаны все динамические интерфейсы браузера. Однако при скрытии этих интерфейсов вокруг элемента может появиться дополнительное пространство. Поэтому в целом единицы, основанные на малом размере области просмотра, считаются более «безопасными», но после начала взаимодействия пользователя со страницей они могут привести к менее привлекательному макету.
Малый размер области просмотра обозначается префиксом
svи задаёт единицы длины в процентах от области просмотраsv*. Размеры этих единиц фиксированы и, следовательно, стабильны, пока не изменится сама область просмотра. - Единицы большого размера области просмотра
-
Если требуется учитывать максимальный размер области просмотра при динамическом сворачивании интерфейсов браузера, следует использовать большой размер области просмотра. Он позволяет содержимому полностью заполнять область просмотра, когда интерфейсы браузера свёрнуты. Следует учитывать, что при раскрытии интерфейсов часть содержимого может быть скрыта.
Например, на мобильных телефонах, где площадь экрана ограничена, браузеры часто скрывают часть или всю строку заголовка и адресную строку после начала прокрутки страницы. Если размер элемента задан в единицах, основанных на большом размере области просмотра, его содержимое заполнит всю видимую страницу, когда эти интерфейсы браузера скрыты. Однако при отображении сворачиваемых интерфейсов они могут скрыть содержимое, размер или положение которого заданы с помощью единиц в процентах от большой области просмотра.
Единицы большого размера области просмотра обозначаются префиксом
lvи задают единицы в процентах от области просмотраlv*. Их размеры фиксированы и, следовательно, стабильны, пока не изменится сама область просмотра. - Единицы динамического размера области просмотра
-
Если требуется автоматически изменять размер области просмотра в ответ на динамическое раскрытие или сворачивание интерфейсов браузера, можно использовать динамический размер области просмотра. Он позволяет содержимому точно соответствовать области просмотра независимо от наличия динамических интерфейсов браузера.
Единицы динамического размера области просмотра обозначаются префиксом
dvи задают единицы в процентах от области просмотраdv*. Их размеры нестабильны, даже если сама область просмотра не меняется.Примечание: Динамический размер области просмотра даёт больше контроля и гибкости, однако использование единиц в процентах от динамического размера области просмотра может привести к изменению размера содержимого во время прокрутки страницы. Это может ухудшить интерфейс пользователя и снизить производительность.
- Стандартные единицы области просмотра
-
Стандартный размер области просмотра определяется браузером. Соответствующая ему единица в процентах от области просмотра может вести себя так же, как единица, основанная на малом или большом размере области просмотра, на промежуточном размере между ними или на динамическом размере.
Примечание: Например, браузер может реализовать стандартную единицу в процентах от высоты области просмотра (
vh), эквивалентную единице высоты в процентах от большой области просмотра (lvh). В этом случае при раскрытом интерфейсе браузера содержимое может быть скрыто в полноэкранном режиме. Сейчас все стандартные единицы области просмотра (vh,vwи т. д.) эквивалентны соответствующим единицам большой области просмотра (lvh,lvwи т. д.).
Длины в процентах от области просмотра задают значения <length> в процентах относительно размера начального блока-контейнера, который, в свою очередь, зависит от размера области просмотра или области страницы, то есть видимой части документа. При изменении высоты или ширины начального блока-контейнера элементы, размер которых от него зависит, масштабируются соответствующим образом. Для каждого из размеров области просмотра существует соответствующий вариант единицы длины в процентах, как описано ниже.
Примечание: Единицы длины области просмотра недопустимы в блоках объявлений правила @page.
-
vh -
Представляет собой процент от высоты начального блока-контейнера области просмотра.
1vhсоставляет 1% высоты области просмотра. Например, если высота области просмотра равна300px, то значение70vhдля свойства будет равно210px.Соответствующие единицы в процентах от малого, большого и динамического размеров области просмотра —
svh,lvhиdvh.vhэквивалентнаlvh— единице длины в процентах от области просмотра, основанной на большом размере. -
vw -
Представляет собой процент от ширины начального блока-контейнера области просмотра.
1vwсоставляет 1% ширины области просмотра. Например, если ширина области просмотра равна800px, то значение50vwдля свойства будет равно400px.Соответствующие единицы в процентах от малого, большого и динамического размеров области просмотра —
svw,lvwиdvw.vwэквивалентнаlvw— единице длины в процентах от области просмотра, основанной на большом размере. -
vmax -
Представляет в процентах наибольшее из значений
vwиvh.Соответствующие единицы в процентах от малого, большого и динамического размеров области просмотра —
svmax,lvmaxиdvmax.vmaxэквивалентнаlvmax— единице длины в процентах от области просмотра, основанной на большом размере. -
vmin -
Представляет в процентах наименьшее из значений
vwиvh.Соответствующие единицы в процентах от малого, большого и динамического размеров области просмотра —
svmin,lvminиdvmin.vminэквивалентнаlvmin— единице длины в процентах от области просмотра, основанной на большом размере. -
vb -
Представляет собой процент от размера начального блока-контейнера в направлении блочной оси корневого элемента.
Соответствующие единицы в процентах от малого, большого и динамического размеров области просмотра — соответственно
svb,lvbиdvb.vbэквивалентнаlvb— единице длины в процентах от области просмотра, основанной на большом размере. -
vi -
Представляет собой процент от размера начального блока-контейнера в направлении строчной оси корневого элемента.
Соответствующие единицы в процентах от малого, большого и динамического размеров области просмотра —
svi,lviиdvi.viэквивалентнаlvi— единице длины в процентах от области просмотра, основанной на большом размере.
Единицы длины контейнерных запросов
При применении стилей к контейнеру с помощью контейнерных запросов можно использовать единицы длины контейнерных запросов. Эти единицы задают длину относительно размеров контейнера запроса. Благодаря единицам длины, относительным к контейнеру, компоненты можно гибко использовать в разных контейнерах без необходимости повторно вычислять конкретные значения длины.
Если подходящий контейнер для запроса недоступен, единица длины контейнерного запроса по соответствующей оси по умолчанию равна единице малого размера области просмотра (sv*).
Подробнее см. в разделе Контейнерные запросы.
-
cqw - Представляет собой процент от ширины контейнера запроса.
1cqwсоставляет 1% ширины контейнера запроса. Например, если ширина контейнера запроса равна800px, то значение50cqwдля свойства будет равно400px. -
cqh - Представляет собой процент от высоты контейнера запроса.
1cqhсоставляет 1% высоты контейнера запроса. Например, если высота контейнера запроса равна300px, то значение10cqhдля свойства будет равно30px. -
cqi - Представляет собой процент от строчного размера контейнера запроса.
1cqiсоставляет 1% строчного размера контейнера запроса. Например, если строчный размер контейнера запроса равен800px, то значение50cqiдля свойства будет равно400px. -
cqb - Представляет собой процент от блочного размера контейнера запроса.
1cqbсоставляет 1% блочного размера контейнера запроса. Например, если блочный размер контейнера запроса равен300px, то значение10cqbдля свойства будет равно30px. -
cqmin - Представляет собой процент от меньшего из строчного и блочного размеров контейнера запроса.
1cqminсоставляет 1% меньшего из строчного и блочного размеров контейнера запроса. Например, если строчный размер контейнера запроса равен800px, а блочный —300px, то значение50cqminдля свойства будет равно150px. -
cqmax - Представляет собой процент от большего из строчного и блочного размеров контейнера запроса.
1cqmaxсоставляет 1% большего из строчного и блочного размеров контейнера запроса. Например, если строчный размер контейнера запроса равен800px, а блочный —300px, то значение50cqmaxдля свойства будет равно400px.
Абсолютные единицы длины
Абсолютные единицы длины представляют физическую величину, если физические характеристики среды вывода известны, например при подготовке макета для печати. Для этого одну из единиц привязывают к физической единице или единице зрительного угла, а остальные задают относительно неё. К физическим единицам относятся cm, in, mm, pc, pt, px и Q. Привязка выполняется по-разному для устройств с низким разрешением, например экранов, и устройств с высоким разрешением, например принтеров.
На устройствах с низким разрешением единица px представляет собой физический эталонный пиксель; остальные единицы задаются относительно неё. Таким образом, 1in определяется как 96px, что равно 72pt. Следствие этого определения в том, что на таких устройствах размеры, заданные в дюймах (in), сантиметрах (cm) или миллиметрах (mm), необязательно совпадают с физическим размером одноимённой единицы.
На устройствах с высоким разрешением дюймы (in), сантиметры (cm) и миллиметры (mm) соответствуют физическим единицам. Поэтому единица px определяется относительно них (1/96 от 1in).
Примечание: Многие пользователи увеличивают размер шрифта по умолчанию в своём пользовательском агенте, чтобы текст было легче читать. Абсолютные длины могут создавать проблемы с доступностью, поскольку они фиксированы и не масштабируются в соответствии с настройками пользователя. Поэтому при задании font-size предпочтительнее использовать относительные длины, например em или rem.
-
px - Один пиксель. На экранах он традиционно соответствует одному пикселю устройства (точке). Однако в принтерах и на экранах с высоким разрешением одному пикселю CSS соответствуют несколько пикселей устройства.
1px=1in / 96. -
cm - Один сантиметр.
1cm=96px / 2.54. -
mm - Один миллиметр.
1mm=1cm / 10. -
Q - Одна четверть миллиметра.
1Q=1cm / 40. -
in - Один дюйм.
1in=2.54cm=96px. -
pc - Одна пика.
1pc=12pt=1in / 6. -
pt - Один пункт.
1pt=1in / 72.
Интерполяция
При анимации значения типа данных <length> интерполируются как действительные числа с плавающей точкой. Интерполяция выполняется для вычисленного значения. Скорость интерполяции определяется функцией плавности, связанной с анимацией.
Примеры
Сравнение различных единиц длины
В следующем примере показано поле ввода, в которое можно ввести значение <length> (например, 300px, 50%, 30vw), чтобы задать ширину полосы результата, которая появится ниже после нажатия клавиши Enter или Return.
Это позволяет сравнить эффекты различных единиц длины.
HTML
<div class="outer">
<div class="input-container">
<label for="length">Enter width:</label>
<input type="text" id="length" />
</div>
<div class="inner"></div>
</div>
<div class="results"></div>
CSS
html {
font-family: sans-serif;
font-weight: bold;
box-sizing: border-box;
}
.outer {
width: 100%;
height: 50px;
background-color: #eeeeee;
position: relative;
}
.inner {
height: 50px;
background-color: #999999;
box-shadow:
inset 3px 3px 5px rgb(255 255 255 / 50%),
inset -3px -3px 5px rgb(0 0 0 / 50%);
}
.result {
height: 20px;
box-shadow:
inset 3px 3px 5px rgb(255 255 255 / 50%),
inset -3px -3px 5px rgb(0 0 0 / 50%);
background-color: orange;
display: flex;
align-items: center;
margin-top: 10px;
}
.result code {
position: absolute;
margin-left: 20px;
}
.results {
margin-top: 10px;
}
.input-container {
position: absolute;
display: flex;
justify-content: flex-start;
align-items: center;
height: 50px;
}
label {
margin: 0 10px 0 20px;
}
JavaScript
const inputDiv = document.querySelector(".inner");
const inputElem = document.querySelector("input");
const resultsDiv = document.querySelector(".results");
inputElem.addEventListener("change", () => {
inputDiv.style.width = inputElem.value;
const result = document.createElement("div");
result.className = "result";
result.style.width = inputElem.value;
const code = document.createElement("code");
code.textContent = `width: ${inputElem.value}`;
result.appendChild(code);
resultsDiv.appendChild(result);
inputElem.value = "";
inputElem.focus();
});
Результат
Спецификации
| Спецификация |
|---|
| Значения и единицы CSS, модуль уровня 4 # длины |
Совместимость с браузерами
| Настольные компьютеры | Мобильные устройства | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome для Android | Firefox для Android | Opera для Android | Safari в iOS | Samsung Internet | WebView Android | WebView в iOS | |
length |
1 |
12 |
1 |
3.5 |
1 |
18 |
4 |
10.1 |
1 |
1.0 |
1 |
1 |
Q |
63 |
79 |
49 |
50 |
13.1 |
63 |
49 |
46 |
13.4 |
8.0 |
63 |
13.4 |
cap |
118 |
118 |
97 |
104 |
17.2 |
118 |
97 |
79 |
17.2 |
25.0 |
118 |
17.2 |
ch |
27 |
12 |
1В Firefox 1–3ch соответствовала ширине символа M.В Firefox 1–3 ch не работала со свойствами CSS border-width и outline-width. |
15 |
7 |
27 |
4 |
15 |
7 |
1.5 |
4.4 |
7 |
container_query_length_units |
105 |
105 |
110 |
91 |
16 |
105 |
110 |
72 |
16 |
20.0 |
105 |
16 |
em |
1 |
12 |
1 |
3.5 |
1 |
18 |
4 |
10.1 |
1 |
1.0 |
1 |
1 |
ex |
1 |
12 |
1 |
3.5 |
1 |
18 |
4 |
10.1 |
1 |
1.0 |
4.4 |
1 |
ic |
106 |
106 |
97 |
92 |
15.4 |
106 |
97 |
72 |
15.4 |
20.0 |
106 |
15.4 |
lh |
109 |
109 |
120 |
95 |
16.4 |
109 |
120 |
74 |
16.4 |
21.0 |
109 |
16.4 |
rcap |
118 |
118 |
147 |
104 |
17.2 |
118 |
147 |
79 |
17.2 |
25.0 |
118 |
17.2 |
rch |
111 |
111 |
147 |
97 |
17.2 |
111 |
147 |
75 |
17.2 |
22.0 |
111 |
17.2 |
rem |
4 |
12 |
3.6 |
11.6 |
5 |
18 |
4 |
12 |
4 |
1.0 |
2 |
4 |
rex |
111 |
111 |
147 |
97 |
17.2 |
111 |
147 |
75 |
17.2 |
22.0 |
111 |
17.2 |
ric |
111 |
111 |
147 |
97 |
17.2 |
111 |
147 |
75 |
17.2 |
22.0 |
111 |
17.2 |
rlh |
111 |
111 |
120 |
97 |
16.4 |
111 |
120 |
75 |
16.4 |
22.0 |
111 |
16.4 |
vb |
108 |
108 |
101 |
94 |
15.4 |
108 |
101 |
73 |
15.4 |
21.0 |
108 |
15.4 |
vh |
20 |
12 |
19Начиная с версии 21, длины в процентах от области просмотра недопустимы в@page. |
20 |
6 |
25 |
19Начиная с версии 21, длины в процентах от области просмотра недопустимы в@page. |
14 |
6 |
1.5 |
4.4 |
6 |
vi |
108 |
108 |
101 |
94 |
15.4 |
108 |
101 |
73 |
15.4 |
21.0 |
108 |
15.4 |
viewport_percentage_units_dynamic |
108 |
108 |
101 |
94 |
15.4 |
108 |
101 |
73 |
15.4 |
21.0 |
108 |
15.4 |
viewport_percentage_units_large |
108 |
108 |
101 |
94 |
15.4 |
108 |
101 |
73 |
15.4 |
21.0 |
108 |
15.4 |
viewport_percentage_units_small |
108 |
108 |
101 |
94 |
15.4 |
108 |
101 |
73 |
15.4 |
21.0 |
108 |
15.4 |
vmax |
26 |
16 |
19Начиная с версии 21, длины в процентах от области просмотра недопустимы в@page. |
15 |
7 |
26 |
19Начиная с версии 21, длины в процентах от области просмотра недопустимы в@page. |
14 |
7 |
1.5 |
1.5 |
7 |
vmin |
26 |
12
12
|
19Начиная с версии 21, длины в процентах от области просмотра недопустимы в@page. |
15 |
7 |
26 |
19Начиная с версии 21, длины в процентах от области просмотра недопустимы в@page. |
14 |
7 |
1.5 |
4.4 |
7 |
vw |
20 |
12 |
19Начиная с версии 21, длины в процентах от области просмотра недопустимы в@page. |
20 |
6 |
25 |
19Начиная с версии 21, длины в процентах от области просмотра недопустимы в@page. |
14 |
6 |
1.5 |
4.4 |
6 |
См. также
© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/CSS/Reference/Values/length