flexbox spacing between items code example
Example 1: add space between all html elements flex
/* There is now a `gap` CSS property
** This works for <flex>, <grid>, and <multicolumn> layouts
** #box{} would lay out all it's children with 10px spacing between
** different rows and 20px betwen different columns
*/
#box {
display: flex;
flex-wrap: wrap;
gap: 10px 20px; /* row-gap [column-gap]*/
}
/* Supported by most modern browesers, Safari excluded. */
Example 2: css flex gap between items
/* limited support (Q1/2021: Firefox, Chrome, Safari) */
.flex-container
{
display: flex;
gap: 5px;
}
/* broad support */
.flex-item
{
margin: 5px;
/* and/or */
padding: 5px;
}
Example 3: space between flexbox
justify-content: space-between;
Example 4: flexbox space between
justify-content: flex-start | flex-end | center | space-between | space-around | space-evenly
Example 5: gap between two flex items
.upper
{
margin:30px;
display:flex;
flex-direction:row;
width:300px;
height:80px;
border:1px red solid;
padding:5px; /* this */
}
.upper > div
{
flex:1 1 auto;
border:1px red solid;
text-align:center;
margin:5px; /* and that, will result in a 10px gap */
}
.upper.mc /* multicol test */
{flex-direction:column;flex-wrap:wrap;width:200px;height:200px;}
Example 6: proper way to make flexbox spacing
/**
Flexbox doesn't have collapsing margins.
Flexbox doesn't have anything akin to border-spacing for tables (except for CSS property gap which isn't supported in Safari, caniuse)
Therefore achieving what you are asking for is a bit more difficult.
In my experience, the "cleanest" way that doesn't use :first-child/:last-child and works without any modification on flex-wrap:wrap is to set padding:5px on the container and margin:5px on the children. That will produce a 10px gap between each child and between each child and their parent.
**/
.upper
{
margin:30px;
display:flex;
flex-direction:row;
width:300px;
height:80px;
border:1px red solid;
padding:5px; /* this */
}
.upper > div
{
flex:1 1 auto;
border:1px red solid;
text-align:center;
margin:5px; /* and that, will result in a 10px gap */
}
.upper.mc /* multicol test */
{flex-direction:column;flex-wrap:wrap;width:200px;height:200px;}
<div class="upper">
<div>aaa<br/>aaa</div>
<div>aaa</div>
<div>aaa<br/>aaa</div>
<div>aaa<br/>aaa<br/>aaa</div>
<div>aaa</div>
<div>aaa</div>
</div>
<div class="upper mc">
<div>aaa<br/>aaa</div>
<div>aaa</div>
<div>aaa<br/>aaa</div>
<div>aaa<br/>aaa<br/>aaa</div>
<div>aaa</div>
<div>aaa</div>
</div>