order

The CSS order property specifies the order used to lay out flex items in their flex container. Elements are laid out in the ascending order of the order value. Elements with the same order value are laid out in the order in which they appear in the source code.

/* Numerical value including negative numbers */
order: 5;
order: -5; 
/* Global values */
order: inherit;
order: initial;
order: unset;

Note: order is only meant to affect the visual order of elements and not their logical or tab order. order must not be used on non-visual media such as speech.

See Using CSS flexible boxes for more properties and information.

Syntax

Initial value0
Applies toflex items and absolutely-positioned flex container children
Inheritedno
Mediavisual
Computed valueas specified
Animation typean integer
Canonical orderthe unique non-ambiguous order defined by the formal grammar

Values

<integer>
Represents the ordinal group the flex item has been assigned.

Formal syntax

<integer>

Examples

Here is a basic HTML chunk:

<!DOCTYPE html>
<header>...</header>
<div id='main'>
   <article>Article</article>
   <nav>Nav</nav>
   <aside>Aside</aside>
</div>
<footer>...</footer>

The following CSS code should create a classic two-sidebar layout surrounding a content block. The Flexible Box Layout Module automatically creates blocks of equal vertical size and uses as much horizontal space as available.

#main { display: flex;  text-align:center; }
#main > article { flex:1;        order: 2; }
#main > nav     { width: 200px;  order: 1; }
#main > aside   { width: 200px;  order: 3; }

Result

 

Specifications

Specification Status Comment
CSS Flexible Box Layout Module
The definition of 'order' in that specification.
Candidate Recommendation Initial definition

Browser compatibility

Feature Chrome Edge Firefox (Gecko) Internet Explorer Opera Safari
Basic support 21.0-webkit
29
(Yes)-webkit
(Yes)
18.0 (18.0)[1]
20.0 (20.0)[2]

10.0-ms[3]
11

12.10 7 -webkit
9
Absolutely-Positioned Flex Children (Yes) (Yes) No support[4] 10.0 12.10 (Yes)
Feature Android Chrome for Android Edge Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
Basic support ? ? (Yes)-webkit
(Yes)
18.0 (18.0)[1]
20.0 (20.0)[2]
? 12.10 7 -webkit
9
Absolutely-Positioned Flex Children {CompatVersionUnknown}} {CompatVersionUnknown}} {CompatVersionUnknown}} No support[4] 10.0 12.1 (Yes)

[1] To activate Flexbox support for Firefox 18 and 19, the user change the about:config preference layout.css.flexbox.enabled to true. Multi-line flexible boxes are supported since Firefox 28.

Firefox currently incorrectly changes the tab order of elements. See bug 812687.

[2] In addition to the unprefixed support, Gecko 48.0 (Firefox 48.0 / Thunderbird 48.0 / SeaMonkey 2.45) added support for a -webkit prefixed version of the property for web compatibility reasons behind the preference layout.css.prefixes.webkit, defaulting to false. Since Gecko 49.0 (Firefox 49.0 / Thunderbird 49.0 / SeaMonkey 2.46) the preference defaults to true.

[3] In Internet Explorer 10, a flexible container is declared using display:-ms-flexbox and not display:flex. The property is implemented under the non-standard name -ms-flex-order.

[4] Flex items aren't sorted according to "order", if they're separated by an abspos sibling. See bug 1345873.

See also

Document Tags and Contributors

 Last updated by: rwilson.or,