Browser CSS Layout Support
CSS Units
Desktop Browsers
Feature |
Length |
Chrome |
FF |
IE |
Opera |
Safari |
Note |
px |
absolute |
all |
all |
all |
all |
all |
‐ |
in |
absolute |
all |
all |
all |
all |
all |
1in == 96px |
cm |
absolute |
all |
all |
all |
all |
all |
1cm == 37.8px |
mm |
absolute |
all |
all |
all |
all |
all |
1mm == 0.1cm == 3.78px |
em |
relative |
all |
all |
all |
all |
all |
1em == 16px == 0.17in == 12pt == 1pc == 4.2mm == 0.42cm |
rem |
relative |
4.0? / 6.0 |
3.6 |
9.0 |
11.6 |
5.0 |
1rem == 16px |
vh |
relative |
20.0 |
19.0 |
9.0 |
15.0 |
6.0 |
The vertical height of the viewport as a percentage |
vw |
relative |
20.0 |
19.0 |
9.0 |
15.0 |
6.0 |
The horizontal width of the viewport as a percentage |
vmax |
relative |
26.0 |
19.0 |
11.0 |
15.0 |
6.1 |
The maxiumum of the viewport’s height or width |
vmin |
relative |
20.0 |
19.0 |
10.0 |
15.0 |
6.0 |
The minimum of the viewport’s height or width |
vm |
relative |
– |
– |
9.0 |
– |
6.0 |
The minimum of the viewport’s height or width |
Mobile Browsers
Feature |
Length |
Android |
BB |
Chrome FA |
FF FA |
IE Mobile |
iOS |
Opera Mini |
Opera Mobile |
px |
absolute |
absolute |
all |
all |
all |
all |
all |
|
|
in |
absolute |
absolute |
all |
all |
all |
all |
all |
|
|
cm |
absolute |
absolute |
all |
all |
all |
all |
all |
|
|
mm |
absolute |
absolute |
all |
all |
all |
all |
all |
|
|
em |
relative |
relative |
all |
all |
all |
all |
all |
|
|
rem |
relative |
2.1 |
7.0 |
all |
all |
10.0 |
4.0 |
none |
12.0 |
vh |
relative |
4.4 |
10.0 |
all |
all |
9.0 |
6.0 |
– |
16.0 |
vw |
relative |
4.4 |
10.0 |
all |
all |
9.0 |
6.0 |
– |
16.0 |
vmax |
relative |
4.4 |
– |
all |
all |
11.0 |
6.0 |
– |
16.0 |
vwmin |
relative |
4.4 |
10.0 |
all |
all |
10.0 |
6.0 |
– |
16.0 |
vm |
relative |
– |
– |
– |
– |
9.0 |
– |
– |
– |
Viewport Units
CSS3 Multi-Column Layout
Feature |
Support |
Notes |
columns |
FF |
shorthand for column-count and column‑width |
column-count |
all |
<count> , auto |
column‑width |
all |
<length> , auto |
column-gap |
all |
<length> , normal |
column-fill |
FF, IE, Opera |
auto , balance |
column-rule |
all |
Shorthand but for column-rule-color , column-rule-style , and column-rule-width |
column-rule-color |
all |
Same as border-color |
column-rule-style |
all |
Same as border-style |
column-rule-width |
all |
Same as border-width |
break-before |
Android, IE, iOS, Safari, Opera |
auto , always , avoid , left , right , page , column , avoid-page , avoid-column |
break-after |
? |
auto , always , avoid , left , right , page , column , avoid-page , avoid-column |
break-inside |
? |
auto , avoid , avoid-page , avoid-column |
column-span |
Android, BB, Chrome, IE, iOS, Safari, Opera, O-Mini, O-Mobile |
none , all , <length> |
Feature |
Chrome |
Firefox |
IE |
Safari |
Opera |
columns |
? |
9.0 -moz- |
10 |
? |
? |
column-count |
12 -webkit- |
5.0 -moz- |
10 |
3.0 -webkit- |
11.10 |
column-width |
12 -webkit- |
5.0 -moz- |
10 |
3.0 -webkit- |
11.10 |
column-gap |
12 -webkit- |
5.0 -moz- |
10 |
3.0 -webkit- |
11.10 |
column-fill |
? |
13.0 -moz- |
10 |
? |
11.10 |
column-rule |
12 -webkit- |
3.5 -moz- |
10 |
3.0 -webkit- |
11.10 |
column-rule-color |
12 -webkit- |
3.5 -moz- |
10 |
3.0 -webkit- |
11.10 |
column-rule-style |
12 -webkit- |
3.5 -moz- |
10 |
3.0 -webkit- |
11.10 |
column-rule-width |
12 -webkit- |
3.5 -moz- |
10 |
3.0 -webkit- |
11.10 |
break-before |
? |
? |
10 |
3.0 -webkit- |
11.10 |
break-after |
? |
? |
10 |
3.0 -webkit- |
11.10 |
break-inside |
? |
? |
10 |
3.? -webkit- |
11.10 |
column-span |
12 -webkit- |
? |
10 |
3.0 -webkit- |
11.10 |
Feature |
Android |
Blackberry |
Chrome for Android |
Firefox Mobile |
IE Mobile |
iOS |
Opera Mini |
Opera Mobile |
columns |
? |
? |
? |
9.0 -moz- |
? |
? |
? |
? |
column-count |
2.1 -webkit- |
7.0 -webkit- |
18 -webkit- |
5.0 -moz- |
10 |
4.0 -webkit- |
5.0 |
11.10 |
column-width |
2.1 -webkit- |
7.0 -webkit- |
18 -webkit- |
5.0 -moz- |
10 |
4.0 -webkit- |
5.0 |
11.10 |
column-gap |
2.1 -webkit- |
7.0 -webkit- |
18 -webkit- |
5.0 -moz- |
10 |
4.0 -webkit- |
5.0 |
11.10 |
column-fill |
2.1 -webkit- |
? |
? |
13.0 -moz- |
10 |
? |
5.0 |
11.10 |
column-rule |
2.1 -webkit- |
7.0 -webkit- |
18 -webkit- |
3.5 -moz- |
10 |
4.0 -webkit- |
5.0 |
11.10 |
column-rule-color |
2.1 -webkit- |
7.0 -webkit- |
18 -webkit- |
3.5 -moz- |
10 |
4.0 -webkit- |
5.0 |
11.10 |
column-rule-style |
2.1 -webkit- |
7.0 -webkit- |
18 -webkit- |
3.5 -moz- |
10 |
4.0 -webkit- |
5.0 |
11.10 |
column-rule-width |
2.1 -webkit- |
7.0 -webkit- |
18 -webkit- |
3.5 -moz- |
10 |
4.0 -webkit- |
5.0 |
11.10 |
break-before |
2.1 -webkit- |
7.0 -webkit- |
18 -webkit- |
? |
10 |
4.0 -webkit- |
5.0 |
11.10 |
break-after |
2.1 -webkit- |
? |
? |
? |
10 |
4.0 -webkit- |
5.0 |
11.10 |
break-inside |
2.1 -webkit- |
7.0 -webkit- |
18 -webkit- |
? |
10 |
4.0 -webkit- |
5.0 |
11.10 |
column-span |
2.1 -webkit- |
7.0 -webkit- |
18 -webkit- |
? |
10 |
4.0 -webkit- |
5.0 |
11.10 |
Property |
Values |
Initial |
Applies to |
Inh. |
Percentages |
Media |
break-after |
auto | always | avoid | left | right | page | column | avoid-page | avoid-column |
auto |
block-level elements |
no |
N/A |
paged |
break-before |
auto | always | avoid | left | right | page | column | avoid-page | avoid-column |
auto |
block-level elements |
no |
N/A |
paged |
break-inside |
auto | avoid | avoid-page | avoid-column |
auto |
block-level elements |
no |
N/A |
paged |
column-count |
<integer> | auto |
auto |
non-replaced block-level elements (except table elements), table cells, and inline-block elements |
no |
N/A |
visual |
column-fill |
auto | balance |
balance |
multicol elements |
no |
N/A |
see below |
column-gap |
<length> | normal |
normal |
multicol elements |
no |
N/A |
visual |
column-rule |
<‘column-rule-width’> || <‘column-rule-style’> || [ <‘column-rule-color’> | transparent ] |
see individual properties |
multicol elements |
no |
N/A |
visual |
column-rule-color |
<color> |
same as for ‘color’ property [CSS21] |
multicol elements |
no |
N/A |
visual |
column-rule-style |
<border-style> |
none |
multicol elements |
no |
N/A |
visual |
column-rule-width |
<border-width> |
medium |
multicol elements |
no |
N/A |
visual |
columns |
<‘column-width’> || <‘column-count’> |
see individual properties |
non-replaced block-level elements (except table elements), table cells, and inline-block elements |
no |
N/A |
visual |
column-span |
none | all |
none |
block-level elements, except floating and absolutely positioned elements |
no |
N/A |
visual |
column-width |
<length> | auto |
auto |
non-replaced block-level elements (except table elements), table cells, and inline-block elements |
no |
N/A |
visual |
- column-rule
- Like border: column-rule-color, column-rule-style, column-rule-width
Flexbox
Feature |
IE |
Firefox |
Chrome |
Safari |
Opera |
Flexbox Prefixed |
10.0 -ms (2011) |
2.0 -moz |
4.0 -webkit |
3.1 -webkit (2009) 6.1 -webkit (2012) |
15.0, 16.0 -webkit |
Flexbox |
11.0 |
22.0 |
29.0 |
9.0 |
12.1, 17.0+ |
Multi-line Flexbox Prefixed |
10.0 -ms (2011)? |
- |
4.0 -webkit |
3.1 -webkit (2009) 6.1 -webkit (2012) |
15.0, 16.0 -webkit |
Multi-line Flexbox |
11.0 |
28.0 |
29.0 |
9.0 |
12.1, 17.0+ |
flex-wrap & flex-flow Prefixed |
N/A? |
28.0 |
N/A? |
6.1 -webkit |
N/A? |
flex-wrap & flex-flow |
|
|
|
|
|
Feature |
IE Mobile |
Android |
Blackberry |
Firefox Mobile |
Chrome for Android |
iOS |
Opera Mini |
Opera Mobile |
UC Browser for Android |
Flexbox Prefixed |
10.0 -ms (2011) |
2.1 -webkit |
7 -webkit |
18.0 -moz † |
4.0 -webkit |
3.2 -webkit (2009) 7.1 -webkit (2012) |
|
15.0 - 19 -webkit |
9.9 -webkit |
Flexbox |
11.0 |
4.4.0 |
10 |
22.0 † |
29.0 |
9.0 |
8 |
12.1 |
|
Multi-line Flexbox Prefixed |
10.0 -ms (2011)? |
2.1 -webkit? |
7 -webkit |
- |
4.0 -webkit |
3.2 -webkit (2009) 7.1 -webkit (2012 |
|
15.0 - 19 -webkit |
9.9 -webkit |
Multi-line Flexbox |
11.0 |
4.4.0 |
10 |
28.0 |
29.0 |
9.0 |
9 |
12.1 |
|
|
|
|
|
|
|
|
|
|
|
- (YYYY)
- Year of syntax used. 2009 = original, 2011 = hybrid, 2012 = final
- †
- Requires enabling via browser config
Notes
- Be explicit in setting
flex-grow
, flex-shrink
, and flex-basis
for IE and potentially other browsers that don’t have the W3C defaults.
.flex-box{
display: -ms-flexbox;
-ms-box-orient: horizontal;
display: -webkit-box;/* Safari 3.1, iOS 6 */
display: -webkit-flex;
/*display: -moz-flex;*/
display: -moz-box;/* FF 2.0 */
display: -ms-flex;
display: flexbox;/* flexbox or inline-flexbox */
display: flex;/* flex | inline-flex [Chrome, IE 11, FF 20] */
/* Standard Defaults */
-webkit-flex: 0 1 auto;
-moz-flex: 0 1 auto;
-ms-flex: 0 1 auto;/* IE defaults to 0 0 auto */
flex: 0 1 auto;
flex-grow: 0;
flex-shrink: 1;
flex-basis: auto;
-webkit-flex-flow: row nowrap;
-moz-flex-flow: row nowrap;
-ms-flex-flow: row nowrap;
flex-flow: row nowrap;
flex-direction: row;/* row | row-reverse | column | column-reverse */
flex-wrap: nowrap;/* nowrap | wrap | wrap-reverse */
align-items: stretch;/* stretch | flex-start | flex-end | center | baseline */
align-self: auto;/* auto | flex-start | flex-end | center | baseline | stretch */
align-content: stretch;/* stretch | flex-start | flex-end | center | space-between | space-around */
-ms-order: 0;/* IE 10 */
order: 0;/* IE 11 */
justify-content: flex-start;/* flex-start | flex-end | center | space-between | space-around */
}
Final syntax |
2011 hybrid syntax |
2009 syntax |
IE 10 |
Old Webkit |
Old Mozilla |
display: flex |
display: flexbox |
display: box |
display: -ms-flexbox |
display: -webkit-box |
display: -moz-box |
flex-direction: row |
|
box-direction: normal box-orient: horizontal |
-ms-flex-direction: row |
-webkit-box-orient: horizontal |
-moz-box-orient: horizontal |
flex-wrap: nowrap |
flex-wrap: nowrap |
N/A ? |
-ms-flex-wrap: wrap |
N/A ? |
N/A ? |
flex-flow: row nowrap |
flex-flow: row nowrap |
N/A ? |
N/A ? |
N/A ? |
N/A ? |
justify-content: flex-start |
flex-pack: start |
box-pack: start |
-ms-flex-pack: start |
-webkit-box-pack: start ? |
-moz-box-pack: start ? |
align-items: flex-start |
flex-align: start |
box-align: start |
-ms-flex-align: start |
-webkit-box-align: start ? |
-moz-box-align: start ? |
flex: 1 |
flex: 1 |
box-flex: 1 |
-ms-flex: none |
-webkit-box-flex: 1 |
-moz-box-flex: 1 |
order: 0 |
flex-order: 0 |
box-ordinal-group: 0 |
-ms-flex-order: 0 |
-webkit-order: 0 |
N/A ? |
N/A ? |
N/A ? |
box-flex-group: 1 |
N/A ? |
N/A ? |
N/A ? |
N/A |
N/A |
box-lines: single/multiple |
N/A |
N/A |
N/A |
Property |
Values |
Initial |
Applies to |
Inh. |
Percentages |
Media |
display |
|
|
|
|
|
|
align-content |
|
|
|
|
|
|
align-items |
|
|
|
|
|
|
align-self |
|
|
|
|
|
|
flex-flow |
|
|
|
|
|
|
flex |
|
|
|
|
|
|
justify-content |
|
|
|
|
|
|
order |
|
|
|
|
|
|
Property |
Values |
Initial |
Applies to |
Inh. |
Percentages |
Media |
display |
flex | inline-flex |
N/A |
all |
no? |
N/A |
all |
align-content |
flex-start | flex-end | center | space-between | space-around | stretch |
stretch |
multi-line flex containers |
no |
N/A |
visual |
align-items |
flex-start | flex-end | center | baseline | stretch |
stretch |
flex containers |
no |
N/A |
visual |
align-self |
auto | flex-start | flex-end | center | baseline | stretch |
auto |
flex items |
no |
N/A |
visual |
flex-flow |
<‘flex-direction’> || <‘flex-wrap’> |
see individual props |
flex containers |
see individual props |
N/A |
visual |
flex |
none | [ <’flex-grow’> <’flex-shrink’>? || <’flex-basis’> ] |
see individual props |
flex items |
see individual props |
N/A |
visual |
justify-content |
flex-start | flex-end | center | space-between | space-around |
flex-start |
flex containers |
no |
N/A |
visual |
order |
<integer> |
0 |
flex items and absolutely-positioned children of flex containers |
no |
N/A |
visual |
Property |
Values |
Initial |
Applies to |
Inh. |
Percentages |
Media |
display |
flex | inline-flex |
N/A |
all |
no? |
N/A |
all |
align-content |
flex-start | flex-end | center | space-between | space-around | stretch |
stretch |
multi-line flex containers |
no |
N/A |
visual |
align-items |
flex-start | flex-end | center | baseline | stretch |
stretch |
flex containers |
no |
N/A |
visual |
align-self |
auto | flex-start | flex-end | center | baseline | stretch |
auto |
flex items |
no |
N/A |
visual |
flex-flow |
<‘flex-direction’> || <‘flex-wrap’> |
see individual props |
flex containers |
see individual props |
N/A |
visual |
flex |
none | [ <’flex-grow’> <’flex-shrink’>? || <’flex-basis’> ] |
see individual props |
flex items |
see individual props |
N/A |
visual |
justify-content |
flex-start | flex-end | center | space-between | space-around |
flex-start |
flex containers |
no |
N/A |
visual |
order |
<integer> |
0 |
flex items |
no |
N/A |
visual |
Property |
Values |
Initial |
Applies to |
Inh. |
Percentages |
Media |
flex-direction |
row | row-reverse | column | column-reverse |
row |
flex containers |
no |
N/A |
visual |
flex-wrap |
nowrap | wrap | wrap-reverse |
nowrap |
flex containers |
no |
N/A |
visual |
flex-basis |
<’width’> |
auto |
flex items |
no |
relative to the flex container’s inner main size |
visual |
flex-grow |
<number> |
0 |
flex items |
no |
N/A |
visual |
flex-shrink |
<number> |
1 |
flex items |
no |
N/A |
visual |
Important: min-width
, min-height
Property |
Values |
Initial |
Applies to |
Inh. |
Percentages |
Media |
display |
flexbox | inline-flexbox |
N/A |
both |
N/A |
N/A |
? |
flex-align |
start | end | center | baseline | stretch |
stretch |
flexbox items |
no |
specified value |
visual |
flex-flow |
[ row | row-reverse | column | column-reverse ] [ wrap | wrap-reverse ]? |
row |
flexboxes |
no |
lr | rl | tb | bt |
visual |
flex-line-pack |
start | end | center | justify |
start |
multi-line flexboxes |
no |
specified value |
visual |
flex-order |
<integer> |
0 |
flexbox items |
no |
specified value |
visual |
flex-pack |
start | end | center | justify |
start |
flexboxes |
no |
specified value |
visual |
Property |
Values |
Initial |
Applies to |
Inh. |
Percentages |
Media |
display |
flexbox | inline-flexbox |
N/A |
both |
N/A |
N/A |
? |
flex-align |
auto | baseline |
auto |
flexboxes |
no |
specified value |
visual |
flex-direction |
lr | rl | tb | bt | inline | inline-reverse | block | block-reverse |
inline |
flexboxes |
no |
lr | rl | tb | bt |
visual |
flex-order |
<integer> |
1 |
flexbox items |
no |
specified value |
visual |
flex-pack |
start | end | center | justify |
start |
flexboxes |
no |
specified value |
visual |