Skip to main content
← 🎨 CSS as a design systemΒ·Module B2 Β· Lesson 12
TaskBuild a nav bar: 4 links Home / Pricing / Docs / Log in. .nav with display: flex, gap: 16px. The .login link should be pushed to the right via margin-left: auto. Add padding 12px 24px and background #18181B with white text.

Pattern: margin-left auto for 'push to the right'

75 XP5 min
Theory

The trick that saves nav bars

A flex row of links where ONE specific link should sit at the far right while the others sit on the left:

<nav class="nav">
  <a>Home</a>
  <a>Pricing</a>
  <a>Docs</a>
  <a class="login">Log in</a>
</nav>

You COULD use justify-content: space-between but that spreads ALL of them apart evenly. You want most-clumped-left, ONE on the right.

.nav { display: flex; gap: 16px; }
.login { margin-left: auto; }    /* absorbs all empty space on the left */

Done. The auto margin eats all available main-axis space, pushing .login to the right edge.

Why it works

A flex item with margin-left: auto (or any "auto" margin) GETS as much free space as possible BEFORE positioning. So the empty space between the previous items and .login expands to fill the gap.

Other variants

.center-me { margin-left: auto; margin-right: auto; }   /* hug center via auto on both sides */
.bottom-of-column {                                      /* in flex column */
  margin-top: auto;
}

Compare to space-between

Both produce "far apart" layouts but differently:

  • justify-content: space-between distributes ALL items evenly.
  • margin-left: auto on one child pushes ONLY that child away. Others stay clumped.

Use the second when you have "primary nav on the left, account on the right" patterns.

πŸ”’

Sign up to start coding

Theory is open to everyone. The interactive editor, live preview, and check are unlocked with a 7-day free trial β€” card required, cancel anytime.

Sign up β€” free trial β†’

First 10 lessons in each track are free. No card needed for those.

← PreviousNext lesson β†’

Get one Python or web tip a day β€” by email

Short, hand-written, no spam. Unsubscribe in one click.