Skip to main content
illustration of random abstract shapes

Flex vs. Grid: Choosing the Right Tool for Modern Web Layouts

Welcome back, fellow coders! Let’s look into a topic that probably feels as universal as the age-old tabs vs. spaces debate (and we won’t open that can of worms today! 😉) – the use of CSS Flexbox and Grid.

Remember the olden days when we were stuck with floats, clear fixes, and the dreaded inline-block? Those days might seem like the Dark Ages of web layout. But with the advent of Flexbox and Grid, it feels like we’ve leapt into the Renaissance of CSS.

Let’s lay it all out and see how Flex and Grid stack up.

A Flashback: Before Flex and Grid

Before delving into the specifics of Flexbox and Grid, it’s worth revisiting the old ways. The web was, in many ways, wilder. Aligning items vertically was akin to performing magic. The clearfix hack was the duct tape holding our layouts together, and responsive design? Oh boy, that was a beast unto itself!

We used tables for layout. Yes, tables! 🙀 And while they did the job, they weren’t semantically correct, and our codebases were riddled with hacky solutions. Thankfully, the web evolved, and we got cleaner, more efficient ways to lay out our designs.

Flexbox: The Swiss Army Knife

JavaScript aside, Flexbox felt like one of the first interactive tools CSS gave us.

Why use Flexbox?

  1. 1D Layouts: Flexbox shines when you’re working in one dimension, either rows or columns.
  2. Alignment & Distribution: Want center alignment? align-items: center and voila! Need space between items? justify-content: space-between is your friend.
  3. Order & Reorder: Easily shuffle items using the order property.
.container {
  display: flex;
  justify-content: center;
  align-items: center;

.item {
  order: 2; /* Reordering made easy. */

Grid: When You Think in 2D

Enter CSS Grid, arguably the superhero of 2D layouts.

Why opt for Grid?

  1. 2D Layouts: Grid lets you work in both rows and columns simultaneously. Designing complex layouts becomes intuitive.
  2. Template Areas: Define areas in your layout using a neat ASCII art-style syntax.
  3. Grid Gaps: Say goodbye to managing margins. Easily handle space between rows and columns.
.container {
  grid-gap: 16px;
  display: grid;
  grid-template-columns: repeat(3, 1fr);

So, Flex or Grid?

It’s not really an “either/or” situation. Both have their strengths and use cases.

For a harmonious web layout, you might find it effective to use both in tandem. For instance, a page could use Grid for the overall layout while components within the grid items use Flexbox.

Remember, it’s not about choosing one over the other; it’s about selecting the right tool for the task.

A Little Flex and Grid Magic

Say you have a card layout – the overall structure could use Grid to place the cards while the content inside each card (maybe an icon, a title, and a description) can be laid out with Flexbox.

/* Using Grid for card layout */
.cards-container {
  grid-gap: 20px;
  display: grid;
  grid-template-columns: repeat(3, 1fr);

/* Using Flexbox for card content */
.card {
  display: flex;
  flex-direction: column;
  align-items: center;

Wrapping it up (not in a div 😉)

A decade ago, the things we do effortlessly today with Flexbox and Grid were dreams. These tools have given us immense power and flexibility.

While there’s no one-size-fits-all, understanding the strengths of both will help you make informed decisions. So next time you’re unsure of whether to flex those items or grid them up, think about the layout’s nature and choose wisely!

Till the next pixel-pushing adventure, keep coding and stay curious! 🚀🖖

Stay in touch

Don't miss out on new posts or project updates. Hit me up on X (Twitter) for updates, queries, or some good ol' tech talk.

Follow @zkMake
Zubin Khavarian's Profile Written by Zubin Khavarian