box-lines

Non-standard
This feature is non-standard and is not on a standards track. Do not use it on production sites facing the Web: it will not work for every user. There may also be large incompatibilities between implementations and the behavior may change in the future.

This is a property of the original CSS Flexible Box Layout Module draft, and has been replaced by a newer standard. See flexbox for information about the current standard.

The box-lines CSS property determines whether the box may have a single or multiple lines (rows for horizontally oriented boxes, columns for vertically oriented boxes).

/* Keyword values */
box-lines: single;
box-lines: multiple;

/* Global values */
box-lines: inherit;
box-lines: initial;
box-lines: unset;

By default a horizontal box will lay out its children in a single row, and a vertical box will lay out its children in a single column. This behavior can be changed using the box-lines property. The default value is single, which means that all elements will be placed in a single row or column, and any elements that don't fit will simply be considered overflow.

If a value of multiple is specified, however, then the box is allowed to expand to multiple lines (that is, multiple rows or columns) in order to accommodate all of its children. The box must attempt to fit its children on as few lines as possible by shrinking all elements down to their minimum widths or heights if necessary.

If the children in a horizontal box still do not fit on a line after being reduced to their minimum widths, then children are moved one by one onto a new line, until the elements remaining on the previous line fit. This process can repeat to an arbitrary number of lines. If a line contains only a single element that doesn't fit, then the element should stay on that line and overflow out of the box. The later lines are placed below the earlier lines in normal direction boxes and above in reverse direction boxes. The height of a line is the height of the largest child in that line. No additional space appears between the lines apart from the margins on the largest elements in each line. For calculating the height of a line, margins with a computed value of auto should be treated as having a value of 0.

A similar process occurs for children in a vertical box. Later lines in normal direction boxes are placed to the right of earlier lines and to the left in reverse direction boxes.

Once the number of lines has been determined, elements with a computed value for box-flex other than 0 stretch as necessary in an attempt to fill the remaining space on the lines. Each line computes flexes independently, so only elements on that line are considered when evaluating box-flex and box-flex-groups. The packing of elements in a line, as specified by the box-pack property, is also computed independently for each line.

Syntax

The box-lines property is specified as one of the keyword values listed below.

Values

single
Box elements lay out in a single row or column.
multiple
Box elements layout in multiple rows or columns.

Formal definition

Initial valuesingle
Applies tobox elements
Inheritedno
Computed valueas specified
Animation typediscrete

Formal syntax

single | multiple

Examples

Simple usage example

In the original version of the spec, box-lines allowed you to specify that you wanted your flex container's children to wrap onto multiple lines. This was only supported in WebKit-based browsers, with a prefix.

div {
  display: box;
  box-orient: horizontal;
  box-lines: multiple;
}

The modern flexbox equivalent is flex-wrap.

Specifications

Not part of any standard.

Browser compatibility

DesktopMobile
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome for AndroidFirefox for AndroidOpera for AndroidSafari on iOSSamsung Internet
box-lines
DeprecatedNon-standard
Chrome No support 1 — 67
Prefixed
No support 1 — 67
Prefixed
Prefixed Implemented with the vendor prefix: -webkit-
Edge No support NoFirefox No support NoIE No support NoOpera No support 15 — 54
Prefixed
No support 15 — 54
Prefixed
Prefixed Implemented with the vendor prefix: -webkit-
Safari Full support 3
Prefixed
Full support 3
Prefixed
Prefixed Implemented with the vendor prefix: -webkit-
No support 1.1 — 3
Prefixed
Prefixed Implemented with the vendor prefix: -khtml-
WebView Android No support ≤37 — 67
Prefixed
No support ≤37 — 67
Prefixed
Prefixed Implemented with the vendor prefix: -webkit-
Chrome Android No support 18 — 67
Prefixed
No support 18 — 67
Prefixed
Prefixed Implemented with the vendor prefix: -webkit-
Firefox Android No support NoOpera Android No support 14 — 48
Prefixed
No support 14 — 48
Prefixed
Prefixed Implemented with the vendor prefix: -webkit-
Safari iOS Full support 1
Prefixed
Full support 1
Prefixed
Prefixed Implemented with the vendor prefix: -webkit-
Samsung Internet Android No support 1.0 — 9.0
Prefixed
No support 1.0 — 9.0
Prefixed
Prefixed Implemented with the vendor prefix: -webkit-

Legend

Full support
Full support
No support
No support
Non-standard. Expect poor cross-browser support.
Non-standard. Expect poor cross-browser support.
Deprecated. Not for use in new websites.
Deprecated. Not for use in new websites.
Requires a vendor prefix or different name for use.
Requires a vendor prefix or different name for use.

See also