The <length>
CSS data type represents a distance value. Lengths can be used in numerous CSS properties, such as width
, height
, margin
, padding
, border-width
, font-size
, and text-shadow
.
Note: Although <percentage>
values are also CSS dimensions, and are usable in some of the same properties that accept <length>
values, they are not themselves <length>
values. See <length-percentage>
.
Syntax
The <length>
data type consists of a <number>
followed by one of the units listed below. As with all CSS dimensions, there is no space between the unit literal and the number. The length unit is optional after the number 0
.
Note: Some properties allow negative <length>
s, while others do not.
Units
Relative length units
Relative lengths represent a measurement in terms of some other distance. Depending on the unit, this can be the size of a specific character, the line height, or the size of the viewport.
Font-relative lengths
Font-relative lengths define the <length>
value in terms of the size of a particular character or font attribute in the font currently in effect in an element or its parent.
Note: These units, especially em
and rem
, are often used to create scalable layouts, which maintain the vertical rhythm of the page even when the user changes the font size.
cap
'- Represents the "cap height" (nominal height of capital letters) of the element’s
font
. ch
- Represents the width, or more precisely the advance measure, of the glyph "0" (zero, the Unicode character U+0030) in the element's
font
. In the cases where it is impossible or impractical to determine the measure of the “0” glyph, it must be assumed to be 0.5em wide by 1em tall. em
- Represents the calculated
font-size
of the element. If used on thefont-size
property itself, it represents the inherited font-size of the element. ex
- Represents the x-height of the element's
font
. On fonts with the "x" letter, this is generally the height of lowercase letters in the font;1ex ≈ 0.5em
in many fonts. ic
'- Equal to the used advance measure of the "水" glyph (CJK water ideograph, U+6C34), found in the font used to render it.
lh
'- Equal to the computed value of the
line-height
property of the element on which it is used, converted to an absolute length. rem
- Represents the
font-size
of the root element (typically<html>
). When used within the root elementfont-size
, it represents its initial value (a common browser default is16px
, but user-defined preferences may modify this). rlh
'- Equal to the computed value of the
line-height
property on the root element (typically<html>
), converted to an absolute length. When used on thefont-size
orline-height
properties of the root element, it refers to the properties' initial value.
Viewport-percentage lengths
Viewport-percentage lengths define the <length>
value relative to the size of the viewport, i.e., the visible portion of the document. Viewport lengths are invalid in @page
declaration blocks.
vh
- Equal to 1% of the height of the viewport's initial containing block.
vw
- Equal to 1% of the width of the viewport's initial containing block.
vi
'- Equal to 1% of the size of the initial containing block, in the direction of the root element’s inline axis.
vb
'- Equal to 1% of the size of the initial containing block, in the direction of the root element’s block axis.
vmin
- Equal to the smaller of
vw
andvh
. vmax
- Equal to the larger of
vw
andvh
.
Absolute length units
Absolute length units represent a physical measurement when the physical properties of the output medium are known, such as for print layout. This is done by anchoring one of the units to a physical unit, and then defining the others relative to it. The anchor is done differently for low-resolution devices, such as screens, versus high-resolution devices, such as printers.
For low-dpi devices, the unit px
represents the physical reference pixel; other units are defined relative to it. Thus, 1in
is defined as 96px
, which equals 72pt
. The consequence of this definition is that on such devices, dimensions described in inches (in
), centimeters (cm
), or millimeters (mm
) don't necessary match the size of the physical unit with the same name.
For high-dpi devices, inches (in
), centimeters (cm
), and millimeters (mm
) are the same as their physical counterparts. Therefore, the px
unit is defined relative to them (1/96 of 1 inch).
Note: Many users increase their user agent's default font size to make text more legible. Absolute lengths can cause accessibility problems, since they are fixed and do not scale according to user settings. For this reason, prefer relative lengths (such as em
or rem
) when setting font-size
.
px
- One pixel. For screen displays, it traditionally represents one device pixel (dot). However, for printers and high-resolution screens, one CSS pixel implies multiple device pixels.
1px
= 1/96th of1in
. cm
- One centimeter.
1cm
=96px/2.54
. mm
- One millimeter.
1mm
= 1/10th of1cm
. Q
'- One quarter of a millimeter.
1Q
= 1/40th of1cm
. in
- One inch.
1in
=2.54cm
=96px
. pc
- One pica.
1pc
=12pt
= 1/6th of1in
. pt
- One point.
1pt
= 1/72nd of1in
. mozmm
' , removed in Firefox 59- An experimental unit that attempts to render at exactly one millimeter regardless of the size or resolution of the display. This is rarely actually what you want, but may be useful in particular for mobile devices.
Interpolation
When animated, values of the <length>
data type are interpolated as real, floating-point numbers. The interpolation happens on the calculated value. The speed of the interpolation is determined by the timing function associated with the animation.
Examples
Length unit comparison
The following demo provides you with an input field in which you can enter a <length>
value (e.g. 300px
, 50%
, 30vw
) to set the width of a result bar that will appear below it once you've pressed Return.
This allows you to compare and contrast the effect of different length units.
HTML
<div class="outer">
<div class="input-container">
<label>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: #eee;
position: relative;
}
.inner {
height: 50px;
background-color: #999;
box-shadow: inset 3px 3px 5px rgba(255,255,255,0.5),
inset -3px -3px 5px rgba(0,0,0,0.5);
}
.result {
height: 20px;
background-color: #999;
box-shadow: inset 3px 3px 5px rgba(255,255,255,0.5),
inset -3px -3px 5px rgba(0,0,0,0.5);
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;
result.innerHTML = `<code>width: ${inputElem.value}</code>`;
resultsDiv.appendChild(result);
inputElem.value = '';
inputElem.focus();
})
Result
Specifications
Specification | Status | Comment |
---|---|---|
CSS Values and Units Module Level 4The definition of '<length>' in that specification. | Editor's Draft | Adds the vi , vb , ic , lh , and rlh units.
|
CSS Values and Units Module Level 3The definition of '<length>' in that specification. | Candidate Recommendation | Adds the ch , rem , vw , vh , vmin , vmax , and Q units.
|
CSS Level 2 (Revision 1)The definition of '<length>' in that specification. | Recommendation | Explicit definition of the em , pt , pc , and px units.
|
CSS Level 1The definition of '<length>' in that specification. | Recommendation | Initial definition. Implicit definition of the em , pt , pc , and px units.
|
Browser compatibility
The compatibility table on this page is generated from structured data. If you'd like to contribute to the data, please check out https://github.com/mdn/browser-compat-data and send us a pull request.
Update compatibility data on GitHub
Desktop | Mobile | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
<length>
|
Chrome
Full support 1 |
Edge
Full support 12 |
Firefox
Full support 1 |
IE
Full support 3 |
Opera
Full support 3.5 |
Safari
Full support 1 |
WebView Android
Full support ≤37 |
Chrome Android
Full support 18 |
Firefox Android
Full support 4 |
Opera Android
Full support 10.1 |
Safari iOS
Full support 1 |
Samsung Internet Android
Full support 1.0 |
Q unit
|
Chrome
Full support 63 |
Edge
Full support 79 |
Firefox
Full support 49 |
IE
No support No |
Opera
Full support 50 |
Safari
No support No |
WebView Android
Full support 63 |
Chrome Android
Full support 63 |
Firefox Android
Full support 49 |
Opera Android
Full support 46 |
Safari iOS
No support No |
Samsung Internet Android
Full support 8.0 |
cap unit
|
Chrome
No support No |
Edge
No support No |
Firefox
No support No |
IE
No support No |
Opera
No support No |
Safari
No support No |
WebView Android
No support No |
Chrome Android
No support No |
Firefox Android
No support No |
Opera Android
No support No |
Safari iOS
No support No |
Samsung Internet Android
No support No |
ch unit
|
Chrome
Full support 27 |
Edge
Full support 12 |
Firefox Full support 1 Full support 1 Notes' From Firefox 1 to Firefox 3, |
IE
Full support 9 |
Opera
Full support 20 |
Safari
Full support 7 |
WebView Android
Full support ≤37 |
Chrome Android
Full support 27 |
Firefox Android
Full support 4 |
Opera Android
Full support 14 |
Safari iOS
Full support 7 |
Samsung Internet Android
Full support 1.5 |
ex unit
|
Chrome
Full support 1 |
Edge
Full support 12 |
Firefox
Full support 1 |
IE
Full support 4 |
Opera
Full support 3.5 |
Safari
Full support 1 |
WebView Android
Full support 1 |
Chrome Android
Full support 18 |
Firefox Android
Full support 4 |
Opera Android
Full support 10.1 |
Safari iOS
Full support 1 |
Samsung Internet Android
Full support 1.0 |
ic unit
|
Chrome
No support No |
Edge
No support No |
Firefox
No support No |
IE
No support No |
Opera
No support No |
Safari
No support No |
WebView Android
No support No |
Chrome Android
No support No |
Firefox Android
No support No |
Opera Android
No support No |
Safari iOS
No support No |
Samsung Internet Android
No support No |
lh unit
|
Chrome
No support No |
Edge
No support No |
Firefox
No support No |
IE
No support No |
Opera
No support No |
Safari
No support No |
WebView Android
No support No |
Chrome Android
No support No |
Firefox Android
No support No |
Opera Android
No support No |
Safari iOS
No support No |
Samsung Internet Android
No support No |
|
Chrome
No support No |
Edge
No support No |
Firefox
No support 4 — 59 |
IE
No support No |
Opera
No support No |
Safari
No support No |
WebView Android
No support No |
Chrome Android
No support No |
Firefox Android
No support 4 — 59 |
Opera Android
No support No |
Safari iOS
No support No |
Samsung Internet Android
No support No |
rem unit
|
Chrome
Full support 4 |
Edge
Full support 12 |
Firefox
Full support 3.6 |
IE
Full support 9 |
Opera
Full support 11.6 |
Safari
Full support 5 |
WebView Android
Full support 2 |
Chrome Android
Full support 18 |
Firefox Android
Full support 4 |
Opera Android
Full support 12 |
Safari iOS
Full support 4 |
Samsung Internet Android
Full support 1.0 |
rlh unit
|
Chrome
No support No |
Edge
No support No |
Firefox
No support No |
IE
No support No |
Opera
No support No |
Safari
No support No |
WebView Android
No support No |
Chrome Android
No support No |
Firefox Android
No support No |
Opera Android
No support No |
Safari iOS
No support No |
Samsung Internet Android
No support No |
vb unit
|
Chrome
No support No |
Edge
No support No |
Firefox
No support No |
IE
No support No |
Opera
No support No |
Safari
No support No |
WebView Android
No support No |
Chrome Android
No support No |
Firefox Android
No support No |
Opera Android
No support No |
Safari iOS
No support No |
Samsung Internet Android
No support No |
vh unit
|
Chrome
Full support 20 |
Edge
Full support 12 |
Firefox Full support 19 Full support 19 Notes' Starting with version 21, viewport-percentage lengths are invalid in |
IE
Full support 9 |
Opera
Full support 20 |
Safari
Full support 6 |
WebView Android
Full support ≤37 |
Chrome Android
Full support 25 |
Firefox Android Full support 19 Full support 19 Notes' Starting with version 21, viewport-percentage lengths are invalid in |
Opera Android
Full support 14 |
Safari iOS
Full support 6 |
Samsung Internet Android
Full support 1.5 |
vi unit
|
Chrome
No support No |
Edge
No support No |
Firefox
No support No |
IE
No support No |
Opera
No support No |
Safari
No support No |
WebView Android
No support No |
Chrome Android
No support No |
Firefox Android
No support No |
Opera Android
No support No |
Safari iOS
No support No |
Samsung Internet Android
No support No |
vmax unit
|
Chrome
Full support 26 |
Edge
Full support 16 |
Firefox Full support 19 Full support 19 Notes' Starting with version 21, viewport-percentage lengths are invalid in |
IE
No support No |
Opera
Full support 15 |
Safari
Full support 6.1 |
WebView Android
Full support 1.5 |
Chrome Android
Full support 26 |
Firefox Android Full support 19 Full support 19 Notes' Starting with version 21, viewport-percentage lengths are invalid in |
Opera Android
Full support 14 |
Safari iOS
Full support 6.1 |
Samsung Internet Android
Full support 1.5 |
vmin unit
|
Chrome
Full support 26 |
Edge Full support 12 Full support 12 Full support 12 Alternate Name' Uses the non-standard name: |
Firefox Full support 19 Full support 19 Notes' Starting with version 21, viewport-percentage lengths are invalid in |
IE Full support 10 Full support 10 Full support 9 Alternate Name' Uses the non-standard name: |
Opera
Full support 15 |
Safari
Full support 6.1 |
WebView Android
Full support ≤37 |
Chrome Android
Full support 26 |
Firefox Android Full support 19 Full support 19 Notes' Starting with version 21, viewport-percentage lengths are invalid in |
Opera Android
Full support 14 |
Safari iOS
Full support 6.1 |
Samsung Internet Android
Full support 1.5 |
vw unit
|
Chrome
Full support 20 |
Edge
Full support 12 |
Firefox Full support 19 Full support 19 Notes' Starting with version 21, viewport-percentage lengths are invalid in |
IE
Full support 9 |
Opera
Full support 20 |
Safari
Full support 6 |
WebView Android
Full support ≤37 |
Chrome Android
Full support 25 |
Firefox Android Full support 19 Full support 19 Notes' Starting with version 21, viewport-percentage lengths are invalid in |
Opera Android
Full support 14 |
Safari iOS
Full support 6 |
Samsung Internet Android
Full support 1.5 |
Legend
- Full support
- Full support
- No support
- No support
- Non-standard. Expect poor cross-browser support.'
- Non-standard. Expect poor cross-browser support.
- See implementation notes.'
- See implementation notes.
- Uses a non-standard name.'
- Uses a non-standard name.
See also
- [[../../../Learn/CSS/Building_blocks/Values_and_units|CSS values & units tutorial]]
- CSS values & units reference
- Box Model
<length> by Mozilla Contributors is licensed under CC-BY-SA 2.5.