columns
Baseline
Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since March 2017.
The columns CSS shorthand property sets the number of columns to use when drawing an element's contents, the columns' widths, and the columns' heights.
Try it
columns: 2;
columns: 6rem auto;
columns: 12em;
columns: 3;
<section id="default-example">
<p id="example-element">
London. Michaelmas term lately over, and the Lord Chancellor sitting in
Lincoln's Inn Hall. Implacable November weather. As much mud in the streets
as if the waters had but newly retired from the face of the earth, and it
would not be wonderful to meet a Megalosaurus, forty feet long or so,
waddling like an elephantine lizard up Holborn Hill.
</p>
</section>
#example-element {
min-width: 21rem;
text-align: left;
}
Constituent properties
This property is a shorthand for the following CSS properties:
Syntax
/* Column width */
columns: 18em;
/* Column count */
columns: auto;
columns: 2;
/* Column width and count */
columns: 2 auto;
columns: auto 12em;
columns: auto auto;
/* Column width and/or count, and column height */
columns: 18em / 10em;
columns: 2 / 90vh;
columns: 2 auto / 300px;
/* Global values */
columns: inherit;
columns: initial;
columns: revert;
columns: revert-layer;
columns: unset;
The columns property may be specified as a <column-count> and/or a <column-width> value, optionally followed by a forward slash and a <column-height> value. If both <column-count> and <column-width> values are specified, they can be specified in any order.
Values
<'column-width'>-
The ideal column width, defined as a
<length>or the keywordauto. The actual width may be wider or narrower to fit the available space. Seecolumn-width. <'column-count'>-
The ideal number of columns into which the element's content should be flowed, defined as an
<integer>or the keywordauto. If neither this value nor the column's width areauto, it indicates the maximum allowable number of columns. Seecolumn-count. <'column-height'>-
The height of the columns defined as a
<length>or the keywordauto. Seecolumn-height.
Note:
In browsers that support the column-height property, the columns property also resets the column-wrap property to its initial value, auto.
Formal definition
| Initial value | as each of the properties of the shorthand:
|
|---|---|
| Applies to | Block containers except table wrapper boxes |
| Inherited | no |
| Computed value | as each of the properties of the shorthand:
|
| Animation type | as each of the properties of the shorthand: |
Formal syntax
columns =
[ <'column-width'> || <'column-count'> ] [ / <'column-height'> ]?
<column-width> =
auto |
<length [0,∞]> |
min-content |
max-content |
fit-content( <length-percentage> )
<column-count> =
auto |
<integer [1,∞]>
<column-height> =
auto |
<length [0,∞]>
<length-percentage> =
<length> |
<percentage>
<integer> =
<number-token>
Examples
>Setting three equal columns
HTML
<p class="content-box">
This is a bunch of text split into three columns using the CSS
<code>columns</code>
property. The text is equally distributed over the columns.
</p>
CSS
body {
width: 60%;
margin: 0 auto;
}
.content-box {
columns: 3 auto;
}
Result
Setting three wrapping, fixed height columns
HTML
<p class="content-box">
This is a bunch of text split into three columns using the CSS
<code>columns</code> property. This includes a <code>column-count</code> value
of <code>3</code>, a <code>column-width</code> value of <code>auto</code>, and
a <code>column-height</code> value of <code>5em</code>. The
<code>column-wrap</code> value is set to its initial value, <code>auto</code>;
when a <code>column-height</code> value is included,
<code>column-wrap: auto</code> resolves to <code>wrap</code>, which allows the
columns to wrap onto multiple rows. The text is equally distributed over the
columns, and placed into multiple rows.
</p>
CSS
body {
width: 60%;
margin: 0 auto;
}
.content-box {
columns: 3 auto / 5em;
}
Result
Specifications
| Specification |
|---|
| CSS Multi-column Layout Module Level 1> # columns> |