The CSS align-content property defines how the browser distributes space between and around content items along the cross-axis of their container, which is serving as a flexbox container.
/* Positional alignment */
align-content: center; /* Pack items around the center */
align-content: start; /* Pack items from the start */
align-content: end; /* Pack items from the end */
align-content: flex-start; /* Pack flex items from the start */
align-content: flex-end; /* Pack flex items from the end */
align-content: left; /* Pack items from the left */
align-content: right; /* Pack items from the right */
/* Baseline alignment */
align-content: baseline;
align-content: first baseline;
align-content: last baseline;
/* Distributed alignment */
align-content: space-between; /* Distribute items evenly
The first item is flush with the start,
the last is flush with the end */
align-content: space-around; /* Distribute items evenly
Items have a half-size space
on either end */
align-content: space-evenly; /* Distribute items evenly
Items have equal space around them */
align-content: stretch; /* Distribute items evenly
Stretch 'auto'-sized items to fit
the container */
/* Overflow alignment */
align-content: safe center;
align-content: unsafe center;
/* Global values */
align-content: inherit;
align-content: initial;
align-content: unset;
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 |
startendflex-startstart.flex-endend.centerleftstart.rightstart.baseline
first baselinelast baseline
first baseline is start, the one for last baseline is end.space-betweenspace-aroundspace-evenlystretchauto-sized items have their size increased equally (not proportionally), while still respecting the constraints imposed by max-height/max-width (or equivalent functionality), so that the combined size exactly fills the alignment container along the cross axis.safestart.unsafeflex-start | flex-end | center | space-between | space-around | space-evenly | stretch
#container {
height:200px;
width: 240px;
align-content: center; /* Can be changed in the live sample */
background-color: #8c8c8c;
}
.flex {
display: flex;
flex-wrap: wrap;
}
.grid {
display: grid;
grid-template-columns: repeat(auto-fill, 50px);
}
div > div {
box-sizing: border-box;
border: 2px solid #8c8c8c;
width: 50px;
display: flex;
align-items: center;
justify-content: center;
}
#item1 {
background-color: #8cffa0;
min-height: 30px;
}
#item2 {
background-color: #a0c8ff;
min-height: 50px;
}
#item3 {
background-color: #ffa08c;
min-height: 40px;
}
#item4 {
background-color: #ffff8c;
min-height: 60px;
}
#item5 {
background-color: #ff8cff;
min-height: 70px;
}
#item6 {
background-color: #8cffff;
min-height: 50px;
font-size: 30px;
}
select {
font-size: 16px;
}
.row {
margin-top: 10px;
}
<div id="container" class="flex"> <div id="item1">1</div> <div id="item2">2</div> <div id="item3">3</div> <div id="item4">4</div> <div id="item5">5</div> <div id="item6">6</div> </div> <div class="row"> <label for="display">display: </label> <select id="display"> <option value="flex">flex</option> <option value="grid">grid</option> </select> </div> <div class="row"> <label for="values">align-content: </label> <select id="values"> <option value="normal">normal</option> <option value="stretch">stretch</option> <option value="flex-start">flex-start</option> <option value="flex-end">flex-end</option> <option value="center" selected>center</option> <option value="space-between">space-between</option> <option value="space-around">space-around</option> <option value="space-evenly">space-evenly</option> <option value="start">start</option> <option value="end">end</option> <option value="left">left</option> <option value="right">right</option> <option value="baseline">baseline</option> <option value="first baseline">first baseline</option> <option value="last baseline">last baseline</option> <option value="safe center">safe center</option> <option value="unsafe center">unsafe center</option> <option value="safe right">safe right</option> <option value="unsafe right">unsafe right</option> <option value="safe end">safe end</option> <option value="unsafe end">unsafe end</option> <option value="safe flex-end">safe flex-end</option> <option value="unsafe flex-end">unsafe flex-end</option> </select> </div>
| Specification | Status | Comment |
|---|---|---|
| CSS Box Alignment Module Level 3 The definition of 'align-content' in that specification. | Working Draft | Adds the [ first | last ]? baseline, start, end, left, right, unsafe | safe values. |
| CSS Flexible Box Layout Module The definition of 'align-content' in that specification. | Candidate Recommendation | Initial definition |
| Feature | Chrome | Edge | Firefox | Internet Explorer | Opera | Safari |
|---|---|---|---|---|---|---|
| Basic support |
29 21 -webkit- |
Yes Yes -webkit- |
28 49 -webkit- |
11 | 12.1 |
9 6.1 -webkit- |
space-evenly |
No | No | 52 | No | No | No |
start and end
|
Yes2 | No | Yes | No | Yes2 | ? |
left and right
|
Yes2 | No |
52 Yes2 |
No | Yes2 | ? |
baseline |
57 | No | Yes | No | 44 | ? |
first baseline and last baseline
|
No | No | 52 | No | No | ? |
stretch |
57 | No | 52 | No | 44 | ? |
| Feature | Android webview | Chrome for Android | Edge mobile | Firefox for Android | IE mobile | Opera Android | iOS Safari |
|---|---|---|---|---|---|---|---|
| Basic support | 4.4 | Yes |
Yes Yes -webkit- |
28 49 -webkit- |
11 | 12.1 |
9.2 7.1 -webkit- |
space-evenly |
No | No | No | 52 | No | No | No |
start and end
|
Yes2 | Yes2 | No | No | ? | Yes2 | ? |
left and right
|
Yes2 | Yes2 | No |
52 Yes2 |
No | Yes2 | ? |
baseline |
57 | 57 | No | Yes | No | 44 | ? |
first baseline and last baseline
|
No | No | No | 52 | No | No | ? |
stretch |
57 | 57 | No | 52 | No | 44 | ? |
1. From version 48: this feature is behind the layout.css.prefixes.webkit preference (needs to be set to true). To change preferences in Firefox, visit about:config.
2. This value is recognized, but has no effect.
© 2005–2018 Mozilla Developer Network and individual contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/CSS/align-content