Frontend Mastery
Lesson 17 of 30 57% of course

Modern CSS: Grid, Flexbox, and Container Queries

16 · 8 min · 5/23/2026

Sign in to track progress and bookmarks.

Modern Layout Engineering

CSS is no longer about centering a div. It is about building responsive, fluid, and robust layouts using Layout Engines. We have moved from Page-based media queries to Component-based container queries.

1. Flexbox vs Grid

  • Flexbox: One-dimensional (Row OR Column). Best for alignment and distribution of space between items in an interface.
  • CSS Grid: Two-dimensional (Rows AND Columns). Best for the overall page structure and complex gallery layouts.

2. Container Queries: The Holy Grail

Media queries look at the **Browser Width**. Container queries look at the **Parent Component Width**. This means you can build a 'Card' component that automatically switches from horizontal to vertical layout depending on whether it is placed in a wide sidebar or a narrow main column. This is true component encapsulation.

4. Interview Mastery

Q: "What is 'Layout Thrashing' and how do you prevent it?"

Architect Answer: "Layout Thrashing occurs when JS repeatedly reads and then writes to the DOM in a way that forces the browser to recalculate the layout (reflow) multiple times per frame. To prevent it, always **Batch your reads** (e.g., get all heights first) and then **Batch your writes**. Modern frameworks do this automatically, but in vanilla JS or custom component logic, you should use `requestAnimationFrame` to synchronize your updates with the browser's refresh rate."

Test your knowledge

Quizzes linked to this course—pass to earn certificates.

Browse all quizzes
Frontend Mastery

On this page

1. Flexbox vs Grid 2. Container Queries: The Holy Grail 4. Interview Mastery
1. Core Foundation & Modern JS
ES6+ for Architects: Closures, Generators, and Symbols Asynchronous JS: Event Loop, Microtasks, and Promises TypeScript Mastery: Advanced Types, Generics, and Utility Types
2. React Internals & Core Hooks
Virtual DOM vs Reconciliation: The Fiber Architecture Effective useState & useEffect: Avoiding infinite loops useMemo vs useCallback: When optimization becomes a bottleneck useContext + useReducer: Building a built-in state manager Custom Hooks: Extracting business logic for reusability
3. Professional State Management
Redux Toolkit (RTK): Slices, Selectors, and Thunks RTK Query: Automating API caching and synchronization Zustand: The lightweight alternative to Redux Signal-based State: The future of fine-grained reactivity
4. Performance & Rendering
Component Re-rendering: How to profile and fix slow UIs Lazy Loading & Code Splitting: Shrinking your bundle size Virtualization: Rendering million-row lists efficiently Web Workers: Offloading heavy calculations to background threads
5. Design Systems & CSS
Modern CSS: Grid, Flexbox, and Container Queries CSS-in-JS vs TailWindCSS: Choosing the right styling strategy Storybook: Building a shared component library Accessibility (a11y): Building inclusive web interfaces
6. Next.js & Modern Frameworks
Next.js App Router: SSR vs SSG vs ISR React Server Components (RSC): The end of the Waterfall Data Fetching Patterns: Streaming and Suspense SEO for Frontend: Meta Tags, JSON-LD, and Core Web Vitals
7. Testing & Security
Unit Testing: Vitest and React Testing Library E2E Testing: Playwright for mission-critical flows Frontend Security: XSS, CSRF, and Content Security Policy State Synchronization: Optimistic UI & WebSockets
8. Final Polish & Interview
Micro-Frontends: Scalable architecture for enterprise teams Frontend Architect Interview: System Design & Performance