files/en-us/web/css/reference/properties/place-content/index.md
The place-content CSS shorthand property allows you to align content along both the block and inline directions at once (i.e., the {{CSSxRef("align-content")}} and {{CSSxRef("justify-content")}} properties) in a relevant layout system such as Grid or Flexbox.
{{InteractiveExample("CSS Demo: place-content")}}
place-content: end space-between;
place-content: space-around start;
place-content: start space-evenly;
place-content: end center;
place-content: end;
<section class="default-example" id="default-example">
<div class="example-container">
<div class="transition-all" id="example-element">
<div>One</div>
<div>Two</div>
<div>Three</div>
</div>
</div>
</section>
#example-element {
border: 1px solid #c5c5c5;
display: grid;
grid-template-columns: 60px 60px;
grid-auto-rows: 40px;
height: 180px;
width: 220px;
}
#example-element > div {
background-color: rgb(0 0 255 / 0.2);
border: 3px solid blue;
}
This property is a shorthand for the following CSS properties:
/* Positional alignment */
/* align-content does not take left and right values */
place-content: center start;
place-content: start center;
place-content: end left;
place-content: flex-start center;
place-content: flex-end center;
/* Baseline alignment */
/* justify-content does not take baseline values */
place-content: baseline center;
place-content: first baseline space-evenly;
place-content: last baseline right;
/* Distributed alignment */
place-content: space-between space-evenly;
place-content: space-around space-evenly;
place-content: space-evenly stretch;
place-content: stretch space-evenly;
/* Global values */
place-content: inherit;
place-content: initial;
place-content: revert;
place-content: revert-layer;
place-content: unset;
The first value is the {{CSSxRef("align-content")}} property value, the second the {{CSSxRef("justify-content")}} one.
[!NOTE] If the second value is not present, the first value is used for both, provided it is a valid value for both. If it is invalid for one or the other, the whole value will be invalid.
start
end
flex-start
start.flex-end
end.center
left
start.right
start.space-between
baseline, first baseline, last baseline
first baseline is start, the one for last baseline is end.space-around
space-evenly
stretch
auto-sized items have their size increased equally (not proportionally), while still respecting the constraints imposed by {{CSSxRef("max-height")}}/{{CSSxRef("max-width")}} (or equivalent functionality), so that the combined size exactly fills the alignment containersafe
start.unsafe
{{cssinfo}}
{{csssyntax}}
<div id="container">
<div class="small">Lorem</div>
<div class="small">Lorem
ipsum</div>
<div class="large">Lorem</div>
<div class="large">Lorem
ipsum</div>
<div class="large"></div>
<div class="large"></div>
</div>
<code>writing-mode:</code
><select id="writingMode">
<option value="horizontal-tb" selected>horizontal-tb</option>
<option value="vertical-rl">vertical-rl</option>
<option value="vertical-lr">vertical-lr</option>
<option value="sideways-rl">sideways-rl</option>
<option value="sideways-lr">sideways-lr</option></select
><code>;</code>
<code>direction:</code
><select id="direction">
<option value="ltr" selected>ltr</option>
<option value="rtl">rtl</option></select
><code>;</code>
<code>place-content:</code
><select id="alignContentAlignment">
<option value="normal">normal</option>
<option value="first baseline">first baseline</option>
<option value="last baseline">last baseline</option>
<option value="baseline">baseline</option>
<option value="space-between">space-between</option>
<option value="space-around">space-around</option>
<option value="space-evenly" selected>space-evenly</option>
<option value="stretch">stretch</option>
<option value="center">center</option>
<option value="start">start</option>
<option value="end">end</option>
<option value="flex-start">flex-start</option>
<option value="flex-end">flex-end</option>
<option value="safe">safe</option>
<option value="unsafe">unsafe</option>
</select>
<select id="justifyContentAlignment">
<option value="normal">normal</option>
<option value="space-between">space-between</option>
<option value="space-around">space-around</option>
<option value="space-evenly">space-evenly</option>
<option value="stretch">stretch</option>
<option value="center" selected>center</option>
<option value="start">start</option>
<option value="end">end</option>
<option value="flex-start">flex-start</option>
<option value="flex-end">flex-end</option>
<option value="left">left</option>
<option value="right">right</option>
<option value="safe">safe</option>
<option value="unsafe">unsafe</option></select
><code>;</code>
function update() {
document.getElementById("container").style.placeContent =
`${document.getElementById("alignContentAlignment").value} ` +
`${document.getElementById("justifyContentAlignment").value}`;
}
const alignContentAlignment = document.getElementById("alignContentAlignment");
alignContentAlignment.addEventListener("change", update);
const justifyContentAlignment = document.getElementById(
"justifyContentAlignment",
);
justifyContentAlignment.addEventListener("change", update);
const writingM = document.getElementById("writingMode");
writingM.addEventListener("change", (evt) => {
document.getElementById("container").style.writingMode = evt.target.value;
});
const direction = document.getElementById("direction");
direction.addEventListener("change", (evt) => {
document.getElementById("container").style.direction = evt.target.value;
});
#container {
display: flex;
height: 240px;
width: 240px;
flex-wrap: wrap;
background-color: #8c8c8c;
writing-mode: horizontal-tb; /* Can be changed in the live sample */
direction: ltr; /* Can be changed in the live sample */
place-content: flex-end center; /* Can be changed in the live sample */
}
div > div {
border: 2px solid #8c8c8c;
width: 50px;
background-color: #a0c8ff;
}
.small {
font-size: 12px;
height: 40px;
}
.large {
font-size: 14px;
height: 50px;
}
{{EmbedLiveSample("Placing_content_in_a_flex_container", "370", "300")}}
{{Specifications}}
{{Compat}}