Stop 03 · CSS3Projects · 1/4

Netflix Clone

Part of the Frontend Developer Roadmap

In short

Recreating Netflix's browse page is a layout workout: a big hero banner, rows that scroll sideways, and cards that zoom on hover. Everyone recognises it, which makes it a great demo.

A pixel-close recreation of Netflix's browse UI — hero banner, horizontally-scrolling movie rows, hover-to-preview cards — a great Flexbox/Grid layout challenge. The project is valuable because it combines hierarchy, responsive media, overflow behavior, hover states, reusable cards, and performance considerations into one recognizable interface.

The jaadu mascot holds popcorn next to a big blank poster in a video shop with colour-sorted cassette shelves.

Think of it like this

The video shop shelf, digitised

Old video rental shops had a big poster at the entrance and shelves sorted by genre: Action, Comedy, Hindi. Netflix's UI is that shop on a screen: one hero poster up top, then a shelf per category you slide along.

Watch it happen

A movie row in action

You
Row
Card

swipe sideways

1/5The cards don't shrink, so the row overflows and scrolls horizontally.

The big ideas

What you need to know

Horizontal scroll rows

Flexbox with overflow-x: auto and scroll-snap so rows slide smoothly and stop neatly on a card.

Hover zoom cards

transform: scale() with a transition, so the card grows without pushing its neighbours.

Hero with gradient

A background image with a dark gradient on top so white text stays readable.

Responsive card sizes

Use clamp() or breakpoints so phones show about two cards and desktops show five or six.

How it works

Build plan

  1. 1

    Navbar

    Fixed transparent navbar that turns solid on scroll.

  2. 2

    Hero banner

    Full-width image, gradient overlay, title, description, Play and More Info buttons.

  3. 3

    One movie row

    Build a single scrolling row with scroll-snap and hover zoom.

  4. 4

    Repeat rows

    Copy the row for genres like Trending, Comedy and Thrillers.

  5. 5

    Polish

    Test on mobile, add focus styles and lazy-load images.

See it in code

Walk through the code

css
1.row {2  display: flex;3  gap: 0.5rem;4  overflow-x: auto;5  scroll-snap-type: x mandatory;6  padding-block: 2rem;          /* room for the zoom */7  scrollbar-width: none;8}9.row__card {10  flex: 0 0 clamp(140px, 22vw, 240px);11  scroll-snap-align: start;12  transition: transform 250ms ease;13}14 15.row__card:hover,16.row__card:focus-visible { transform: scale(1.12); z-index: 1; }

1/4A flex row that scrolls sideways and snaps to each card.

flex: 0 0 stops cards shrinking, so the row overflows and scrolls. The padding gives zoomed cards space so they aren't clipped.

Save yourself the pain

Common mistakes

Oops

Using Netflix's real logo and copyrighted posters in a public repo.

Do this instead

Use your own name for the app and free images or posters from an open movie API, with credit.

Oops

Hover-only interactions that do nothing on phones.

Do this instead

Make cards tappable links and add :focus-visible so keyboard users get the zoom too.

Your mission

First milestone: hero plus one row

~45 min

Quick check

Your movie row should scroll sideways, but the cards keep squeezing to fit the screen. What's the fix?

Go deeper

  1. 1Focus on the horizontally scrolling row pattern using Flexbox + `overflow-x`. Validate your understanding by applying it in a small practical example.
  2. 2Recreate the hover-scale card effect with `transform` and `transition`. Validate your understanding by applying it in a small practical example.
  3. 3Use placeholder images/data — the layout is the real practice here.

More projects at this stop

Stuck on this topic? Ask an Insider

Get 1:1 guidance from people who've walked this exact path — on the InsideEdge app.

Download
InsideEdge