Advanced Flexbox - Complex Flex Patterns
Documentation for Advanced Flexbox - Complex Flex Patterns.
Advanced Flexbox - Complex Flex Patterns
What is Advanced Flexbox?
Advanced Flexbox techniques for creating complex, responsive layouts with precise control over item sizing, ordering, and alignment.
Advanced Flexbox Techniques
1. Flex Grow/Shrink/Basis Mastery
.container {
display: flex;
}
/* Grow to fill space */
.item-1 {
flex: 1; /* flex-grow: 1, flex-shrink: 1, flex-basis: 0% */
}
/* Fixed width, won't grow or shrink */
.item-2 {
flex: 0 0 200px; /* flex-grow: 0, flex-shrink: 0, flex-basis: 200px */
}
/* Grow but maintain minimum */
.item-3 {
flex: 1 1 300px; /* Grow, shrink, min 300px */
}2. Order Property
.flex-container {
display: flex;
}
.item-1 { order: 3; } /* Appears third */
.item-2 { order: 1; } /* Appears first */
.item-3 { order: 2; } /* Appears second */
/* Responsive reordering */
@media (max-width: 768px) {
.sidebar { order: 2; }
.main { order: 1; }
}3. Nested Flexbox
.outer-flex {
display: flex;
flex-direction: column;
height: 100vh;
}
.header {
flex: 0 0 60px;
}
.content {
flex: 1;
display: flex; /* Nested flex */
}
.sidebar {
flex: 0 0 250px;
}
.main {
flex: 1;
}4. Flex Wrap Strategies
.wrap-container {
display: flex;
flex-wrap: wrap;
gap: 20px;
}
.item {
flex: 1 1 calc(33.333% - 20px); /* 3 columns with gap */
min-width: 250px; /* Responsive breakpoint */
}
@media (max-width: 768px) {
.item {
flex: 1 1 calc(50% - 20px); /* 2 columns */
}
}
@media (max-width: 480px) {
.item {
flex: 1 1 100%; /* 1 column */
}
}5. Align-Self for Individual Items
.container {
display: flex;
align-items: center;
height: 200px;
}
.item-1 {
align-self: flex-start; /* Override container alignment */
}
.item-2 {
align-self: flex-end;
}
.item-3 {
align-self: stretch;
}Complex Flexbox Patterns
Pattern 1: Holy Grail Layout
.holy-grail {
display: flex;
flex-direction: column;
min-height: 100vh;
}
.header, .footer {
flex: 0 0 auto;
}
.content {
flex: 1;
display: flex;
}
.nav {
flex: 0 0 200px;
order: -1; /* Appears first */
}
.main {
flex: 1;
}
.ads {
flex: 0 0 150px;
}
@media (max-width: 768px) {
.content {
flex-direction: column;
}
.nav, .ads {
flex: 0 0 auto;
}
}Pattern 2: Card Grid with Flexbox
.card-grid {
display: flex;
flex-wrap: wrap;
gap: 20px;
}
.card {
flex: 1 1 calc(33.333% - 20px);
min-width: 280px;
max-width: 400px;
}Pattern 3: Sticky Footer
.page {
display: flex;
flex-direction: column;
min-height: 100vh;
}
.content {
flex: 1; /* Pushes footer down */
}
.footer {
flex: 0 0 auto;
}Pattern 4: Centered Content
.center-container {
display: flex;
justify-content: center;
align-items: center;
min-height: 100vh;
}
.centered-content {
max-width: 600px;
}Pattern 5: Space Between Navigation
.navbar {
display: flex;
justify-content: space-between;
align-items: center;
padding: 10px 20px;
}
.logo {
flex: 0 0 auto;
}
.nav-links {
display: flex;
gap: 20px;
}
.actions {
flex: 0 0 auto;
}Last updated on July 15, 2026