inline-flex
A child container with display: inline-flex
does not automatically fill the parent container. Its size depends on its content and any additional styles applied to it.
flex
A child container with display: flex
automatically fills the parent container's width because flex
behaves like a block-level element, which expands to fit the parent's available width by default.
Example
HTML
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link rel="stylesheet" href="src/style.css" />
</head>
<body>
<h1>inline-flex</h1>
<div class="container">
<div class="inline-flex-c">
<div class="child">child 1</div>
<div class="child">child 2</div>
</div>
</div>
<h1>flex</h1>
<div class="container">
<div class="flex-c">
<div class="child">child 1</div>
<div class="child">child 2</div>
</div>
</div>
</body>
</html>
CSS
body {
background: transparent;
color: #fcbe24;
padding: 0 24px;
margin: 0;
height: 100vh;
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen,
Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;
}
.container {
background-color: white;
color: black;
}
.inline-flex-c {
display: inline-flex;
background-color: palevioletred;
}
.flex-c {
display: flex;
background-color: chocolate;
}
.child{
border-color: greenyellow;
border-style: solid;
}
Result
The flex container stretches to occupy the full width of its parent container. In contrast, the inline-flex container only occupies the width required by its content.
Top comments (1)
Thanks!
Just make sure to strip away irrelevant code (such as the entire HTML markup outside the
body
element, and the CSS styles not applied to the flex containers and their children), and use syntax highlighting if possible.Also consider embedding live examples created in CodePen