The column-fill
CSS property controls how an element's contents are balanced when broken into columns.
The source for this interactive example is stored in a GitHub repository. If you'd like to contribute to the interactive examples project, please clone https://github.com/mdn/interactive-examples and send us a pull request.
Syntax
/* Keyword values */ column-fill: auto; column-fill: balance; column-fill: balance-all; /* Global values */ column-fill: inherit; column-fill: initial; column-fill: unset;
The column-fill
property is specified as one of the keyword values listed below. The initial value is balance
so the content will be balanced across the columns.
Values
auto
- Columns are filled sequentially. Content takes up only the room it needs, this may result in some columns remaining empty.
balance
- Content is equally divided between columns. In fragmented contexts, such as paged media, only the last fragment is balanced. Therefore in paged media, only the last page would be balanced.
balance-all
- Content is equally divided between columns. In fragmented contexts, such as paged media, all fragments are balanced.
Formal definition
Initial value | balance |
---|---|
Applies to | multicol elements |
Inherited | no |
Computed value | as specified |
Animation type | discrete |
Formal syntax
auto | balance | balance-all
Examples
Splitting text evenly across columns
HTML
<p class="content-box"> This is a bunch of text split into multiple columns. The CSS `column-fill` property is used to spread the contents evenly across all the columns. </p>
CSS
.content-box { column-count: 4; column-rule: 1px solid black; column-fill: balance; }
Result
Specifications
Specification | Status | Comment |
---|---|---|
CSS Multi-column Layout Module The definition of 'column-fill' in that specification. |
Working Draft | Initial definition. |
Browser compatibility
Desktop | Mobile | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
column-fill | Chrome Full support 50 | Edge Full support 12 | Firefox
Full support
52
| IE Full support 10 | Opera Full support 37 | Safari
Full support
9
| WebView Android Full support 50 | Chrome Android Full support 50 | Firefox Android
Full support
52
| Opera Android Full support 37 | Safari iOS
Full support
9
| Samsung Internet Android Full support 5.0 |
balance-all | Chrome No support No | Edge No support No | Firefox No support No | IE No support No | Opera No support No | Safari No support No | WebView Android No support No | Chrome Android No support No | Firefox Android No support No | Opera Android No support No | Safari iOS No support No | Samsung Internet Android No support No |
Legend
- Full support
- Full support
- No support
- No support
- Experimental. Expect behavior to change in the future.
- Experimental. Expect behavior to change in the future.
- Requires a vendor prefix or different name for use.
- Requires a vendor prefix or different name for use.
Note that there are some interoperability issues and bugs with column-fill
across browsers, due to unresolved issues in the specification.
In particular, when using column-fill: auto
to fill columns sequentially, Chrome will only consult this property if the multicol container has a size in the block dimension (e.g. height in a horizontal writing mode). Firefox will always consult this property, therefore filling the first column with all of the content in cases where there is no size.