Summary
The CSS align-content
property aligns a flex container's lines within the flex container when there is extra space on the cross-axis.
This property has no effect on single line flexible boxes.
Initial value | stretch |
---|---|
Applies to | multi-line flex containers |
Inherited | no |
Media | visual |
Computed value | as specified |
Animation type | discrete |
Canonical order | the unique non-ambiguous order defined by the formal grammar |
See Using CSS flexible boxes for more properties and information.
Syntax
/* Pack lines from the cross-axis start */ align-content: flex-start; /* Pack lines to the cross-axis end */ align-content: flex-end; /* Pack lines around the cross-axis center */ align-content: center; /* Distribute lines along the cross-axis, start to end */ align-content: space-between; /* Distribute lines along the cross-axis, equally spaced */ align-content: space-around; /* Stretch lines to occupy the whole cross-axis */ align-content: stretch; /* Global values */ align-content: inherit; align-content: initial; align-content: unset;
Values
flex-start
- Lines are packed starting from the cross-start. Cross-start edge of the first line and cross-start edge of the flex container are flushed together. Each following line is flush with the preceding.
flex-end
- Lines are packed starting from the cross-end. Cross-end of the last line and cross-end of the flex container are flushed together. Each preceding line is flushed with the following line.
center
- Lines are packed toward the center of the flex container. The lines are flushed with each other and aligned in the center of the flex container. Space between the cross-start edge of the flex container and first line and between cross-end of the flex container and the last line is the same.
space-between
- Lines are evenly distributed in the flex container. The spacing is done such as the space between two adjacent items is the same. Cross-start edge and cross-end edge of the flex container are flushed with respectively first and last line edges.
space-around
- Lines are evenly distributed so that the space between two adjacent lines is the same. The empty space before the first and after the last lines equals half of the space between two adjacent lines.
stretch
- Lines stretch to use the remaining space. The free-space is split equally between all the lines.
Formal syntax
flex-start | flex-end | center | space-between | space-around | stretch
Example
CSS
#container { display: flex; height:200px; width: 240px; flex-wrap: wrap; background-color: #8c8c8c; align-content: flex-end; /* Can be changed in the live sample */ } div > div { border: 2px solid #8c8c8c; width: 50px; height: 50px; background-color: #a0c8ff; }
HTML
<div id="container"> <div></div> <div></div> <div></div> <div></div> <div></div> <div></div> </div> <select id="contentAlignment"> <option value="flex-start">flex-start</option> <option value="flex-end" selected>flex-end</option> <option value="center">center</option> <option value="space-between">space-between</option> <option value="space-around">space-around</option> <option value="stretch">stretch</option> </select>
JavaScript
var contentAlignment = document.getElementById("contentAlignment"); contentAlignment.addEventListener("change", function (evt) { document.getElementById("container").style.alignContent = evt.target.value; });
Result
Specifications
Specification | Status | Comment |
---|---|---|
CSS Flexible Box Layout Module The definition of 'align-content' in that specification. |
Candidate Recommendation | Initial definition |
Browser compatibility
Feature | Chrome | Edge | Firefox (Gecko) | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|---|
Basic support | 21.0-webkit 29.0 |
20 (12.10240) | 28.0 (28.0)[2] | 11 | 12.10 | 6.1-webkit 9.0 |
Feature | Android | Chrome for Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|
Basic support | 4.4 | (Yes) | 28.0 (28.0)[2] | 11.0 | 12.10 | 7.1-webkit 9.2 |
[1] 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
.