As a front-end developer, I use CSS display property in my day to day work. I can use block, grid or flex as a value for the property.
While working on a project, I needed to have a flex container and at the same time it should be inline. In other words, I needed the content inside the container to be affected by flex, but the container itself needs to act as an inline element.

Luckily, I remembered about display: inline-flex. I’ve never used it before, but I always saw it in the browser DevTools.
Let’s see the design that I wanted to achieve:

Each badge has its own icon that is centered horizontally and vertically. The centering of them is happening because of Flexbox, and all badges are inline since they have display: inline-flex.
HTML:
<div class="badges-list">
<div class="c-badge">
<svg class="c-icon" width="24" height="24">..</svg>
</div>
<div class="c-badge">
<svg class="c-icon" width="24" height="24">..</svg>
</div>
<!-- More badges -->
</div>
Just to confirm, the wrapper .badges-list has nothing to do with displaying the badges inline. It’s happening because of using inline-flex on the child element .c-badge.
CSS:
.c-badge {
display: inline-flex;
justify-content: center;
align-items: center;
}
Check out the demo:
See the Pen display: inline-flex by Ahmad Shadeed (@shadeed) on CodePen.
That’s all. I hope you find this useful. Have you ever used inline-flex? If so, please tweet me with the use case you’ve done.
Thank you for reading.
