So what you would do is use grid-gap for spacing between the items. Then use padding for the same spacing between the items and the container. The last row margin problem is eliminated.
If you apply auto margins to a flex item, that item will automatically extend its specified margin to occupy the extra space in the flex container, depending on the direction in which the auto-margin is applied.
The flex-wrap CSS property sets whether flex items are forced onto one line or can wrap onto multiple lines. If wrapping is allowed, it sets the direction that lines are stacked.
You can add some margin-top
to both flex items, and a negative margin-top
of the same amount to the flex container.
This way, the negative margin of the flex container will neutralize the margin of the flex items at the first line, but not the margin of the items that wrapped to other lines.
.container {
margin-top: -30px;
}
.item-big, .item-small {
margin-top: 30px;
}
.container {
display: flex;
flex-wrap: wrap;
justify-content: space-around;
margin-top: -30px;
}
.item-big, .item-small {
margin-top: 30px;
background: red;
}
.item-big {
background: blue;
width: 300px;
}
<div class="container">
<div class="item-big">
FIRST BIG ELEM
</div>
<div class="item-small">
SECOND SMALL ELEM
</div>
</div>
If your browser supports the CSS gap
property you can use it like this
.container {
display: flex;
flex-wrap: wrap;
justify-content: space-around;
gap: 20px;
}
gap
adds an extra space surrounding the flex-child items. If you want to add some extra space only at the top and bottom, use row-gap
instead.
For browsers that not supports the gap
property you can use the lobotomized owl
selector which selects every element which has an adjacent item right before it, this means it won't select the first one.
.container > * + * {
margin-top: 20px;
}
If you want to add this marign using * + *
operator only if the elements are stacked on top of each other, you should wrap it in @media
.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With