files/en-us/web/css/reference/properties/columns/index.md
The columns CSS shorthand property sets the maximum number of columns to use when drawing an element's contents, along with the minimum width and maximum height of the element's columns.
{{InteractiveExample("CSS Demo: columns")}}
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;
}
This property is a shorthand for the following CSS properties:
/* 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 value may be specified as a <column-count> and/or a <column-width> value, in any order, optionally followed by a <column-height> value preceded by a forward slash (/).
<'column-width'>
auto. The actual width may be wider or narrower to fit the available space. See {{cssxref("column-width")}}.<'column-count'>
auto. If specified as an <integer>, it defines the maximum allowable number of columns. See {{cssxref("column-count")}}.<'column-height'>
auto. See {{cssxref("column-height")}}.[!NOTE] Setting a
<column-height>value resets the {{cssxref("column-wrap")}} property to its initial value,auto. When<column-height>is set to a<length>, the {{cssxref("column-wrap")}}autovalue resolves towrap. When<column-height>is set toauto, it resolves tonowrap.
{{cssinfo}}
{{csssyntax}}
This example shows how to split a text container into three equal columns.
We include a basic {{htmlelement("p")}} element containing text content.
<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>
We set a columns property value on the paragraph that includes a <column-count> value of 3 and a <column-width> value of auto.
body {
width: 60%;
margin: 0 auto;
}
.content-box {
columns: 3 auto;
}
{{EmbedLiveSample('three_equal_columns', 'auto', 120)}}
Note how the text is split up into three columns.
This example demonstrates including a <column-height> value with the columns shorthand property to split a text container into fixed-height columns that wrap onto new lines when the container inline edge is reached.
We include a basic {{htmlelement("p")}} element with some text.
<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>
We set a columns property value on the paragraph that includes a <column-count> value of 3, a <column-width> value of auto, and a <column-height> value of 5em. Because the <column-height> is set to a <length>, the paragraph's {{cssxref("column-wrap")}} value computes to wrap, which allows the columns to wrap onto multiple rows.
.content-box {
columns: 3 auto / 5em;
}
body {
width: 60%;
margin: 0 auto;
}
@supports not (columns: 3 auto / 5em) {
body::before {
content: "Your browser does not support the 'column-height' property.";
background-color: wheat;
position: fixed;
inset: 40% 0;
height: fit-content;
text-align: center;
padding: 1rem 0;
}
}
{{EmbedLiveSample('fixed-height', 'auto', 320)}}
Note how the text is split up into three columns. Each column is 5em high. After every third column, the columns wrap onto a new line in the block direction.
{{Specifications}}
{{Compat}}