CSS Track

Make it look good. Free forever.

Home › Courses › CSS
🔵 Learning Path · 2026

Learn CSS.
Turn structure into design.

HTML is the skeleton. CSS is the muscle, skin, and clothes. Learn it and every page you build becomes something people want to look at. Every example on this track has a live preview — click Preview on any code block to see the result. This page is the map: what to learn, in what order, and the exact projects to build.

~6 weeks, 1 hr/day Beginner → Intermediate CSS3 · modern
The Path 5 Concepts Live demo Mistakes Projects FAQ

CSS is declarative: you describe what the result should look like, and the browser figures out how. Learn the four essentials first: selectors (which elements to target), the box model (how elements occupy space), the cascade (why some rules win over others), and flexbox (how to arrange items in a row). Master those and every layout becomes tractable. Everything else — grid, animations, responsive design — builds on that foundation.

Start here if: you know HTML and want to make it look good. Skip if: you're already confident with flexbox, grid, and the box model.

Why CSS next

HTML gets you a page. CSS gets you a page people want to look at. Every visual aspect of every website — the spacing, the colors, the typography, the responsive layout on your phone — is CSS. Without it, HTML pages look like 1994. With it, the same HTML becomes anything from a sleek SaaS dashboard to an editorial magazine layout.

It's also the fastest win in web development. A beginner can go from "ugly HTML page" to "portfolio-worthy landing page" in 6 weeks of focused learning. There's no compile step, no framework required, no build tooling. Just open the file, change one property, refresh, see the result. That tight feedback loop makes it the most rewarding language to learn first.

The one trap: CSS is easy to start and surprisingly deep to master. The syntax is small (about 500 properties total, and you'll use 50 for 90% of your work), but the combinations and edge cases are vast. The right way to learn is to build constantly — every lesson on this track gives you something to build, and every code block has a live preview so you can see the result immediately.

🗺️ The 6-week path

Follow these in order. Do not skip ahead — each phase depends on the one before it.

1

Selectors & the cascade

Week 1 · ~4 hours

How do you target an element? How do you target one specific element? Why does one rule override another? This phase teaches the selectors you'll use daily and the cascade rules that make CSS predictable — or confusing, if you don't understand them. This is the foundation everything else sits on.

element / class / iddescendantpseudo-classesspecificity
2

The box model

Week 2 · ~5 hours

Every element is a box with four layers: content, padding, border, margin. Understanding these — and how box-sizing changes everything — is essential. 80% of CSS layout bugs are box-model bugs. This is the phase that turns CSS from mysterious to predictable.

content padding border marginwidth vs heightbox-sizingdisplay block inline
3

Colors, text, and typography

Week 2-3 · ~4 hours

The visual layer that makes a page feel polished. Colors (named, hex, rgb, hsl), fonts (font-family, weight, line-height), text properties (size, letter-spacing, alignment), and backgrounds. Every design decision about how text looks lives here.

colorsfont-familyline-heighttext-alignbackground
4

Flexbox

Week 3-4 · ~6 hours

The layout system that made CSS usable. Flexbox arranges items in a row or column, with tools for spacing, alignment, and wrapping. Nearly every modern nav menu, card layout, and button group uses it. Learn flexbox and you can build 80% of real layouts.

display flexjustify-contentalign-itemsgapflex-wrap
5

Grid

Week 4-5 · ~5 hours

Flexbox's two-dimensional sibling. Grid lays out items in rows AND columns at once — perfect for dashboards, galleries, page layouts, and anything with a structured grid. Once you understand both, you'll know which one to use for any layout problem.

display gridgrid-templategrid-gapgrid-area
6

Responsive design

Week 5 · ~4 hours

Making a layout work on every screen size. Media queries, relative units, and mobile-first thinking. Every modern site must be responsive — desktop-first layouts break on phones and phones-only layouts feel cramped on desktops. This phase teaches the skill that makes one page work everywhere.

media queriesmobile-first% and remviewport
7

Animations & transitions

Week 6 · ~4 hours

The details that make a site feel polished. Hover effects, smooth transitions, loading spinners, and keyframe animations. Used well, they communicate state changes and delight users. Used poorly, they distract. This phase teaches the craft.

transitiontransform@keyframesprefers-reduced-motion

🎯 The 5 concepts that matter most

If you only truly understand five things about CSS, make it these.

1. Everything is a box

Every element is a rectangle with content, padding, border, and margin. Once you see the boxes, CSS layout becomes obvious. DevTools shows you the boxes — turn on the outline and walk through any page.

2. Specificity decides who wins

Element selectors are weak. Classes are stronger. IDs are stronger still. Inline styles beat everything. When two rules fight, the more specific one wins. Understand this and CSS stops being "it just works sometimes."

3. The cascade is your friend

CSS rules flow from top to bottom — later rules override earlier ones, unless specificity says otherwise. This lets you write base styles once and override them per-page or per-component. It's the mechanism that makes theming possible.

4. Flexbox solves 80% of layouts

Row of buttons, nav menu, card with image + text, footer with columns. Almost every layout is a flex container with children. Learn flexbox properly and you'll rarely need anything else for component layout.

5. Mobile-first means "start small"

Write CSS for mobile first (single column). Then use media queries to add complexity for larger screens. This is easier than writing desktop layout and trying to shrink it — and it results in faster, cleaner code.

🎬 See it in action

Every code block on this track has a Preview button. Try this one.

CSS
.card {
background: white;
padding: 24px;
border-radius: 12px;
box-shadow: 0 4px 12px rgba(0,0,0,0.1);
font-family: system-ui, sans-serif;
max-width: 320px;
}

.card h2 {
margin: 0 0 8px 0;
color: #1572B6;
font-size: 1.25rem;
}

.card p {
margin: 0;
color: #64748b;
line-height: 1.5;
}

Every example is live. On every lesson in this track, you'll see code blocks with a Preview button. Click it to see the rendered result — no need to open a separate editor, no need to copy code. This is what separates a tutorial you read from a tutorial you use.

⚠️ Common mistakes (from real beginners)

Each of these will cost you hours if you don't know it.

1. Fighting with specificity

You add a class, it doesn't apply. Why? Because another rule has higher specificity. Fix: understand specificity (element < class < id < inline). Or use DevTools to see which rule is winning. Don't use !important — it makes things worse.

2. Forgetting box-sizing: border-box

Without it, width doesn't include padding and border. A 300px-wide element with 20px padding is actually 340px wide. Fix: add *, *::before, *::after { box-sizing: border-box; } to the top of every CSS file. This single rule saves hours of layout debugging.

3. Using margin for spacing between flex children

margin-right: 12px on every child creates awkward last-child spacing and requires :last-child fixes. Fix: use gap: 12px on the flex container. Cleaner and one line.

4. Centering with margin: auto incorrectly

margin: auto centers horizontally (if width is set), not vertically. For vertical centering, use flexbox: display: flex; align-items: center; justify-content: center;. It works every time.

5. Adding !important

When CSS doesn't work, !important feels like a solution. It isn't — it makes the cascade unmanageable. Fix: understand why the rule wasn't applying (usually specificity), then fix that. Reserve !important for overrides of third-party CSS.

6. Using px for everything

Pixel font sizes don't scale on mobile zoom. Fix: use rem for font sizes (relative to root), % for layout widths, and px only for borders and small spacing values.

7. Not testing responsive early

You build for desktop, launch it, and it's broken on mobile. Fix: use DevTools' mobile view from the first day. Write mobile CSS first, then add media queries for desktop.

8. Setting display: none for everything

Hiding elements with display: none removes them from the layout — buttons shift, page height changes. It also hides from screen readers. Fix: use visibility: hidden (keeps space) or opacity: 0 (keeps space, keeps accessible) depending on intent.

🔨 Projects by difficulty

Build these in order. Each one uses only concepts from the phases before it.

Beginner

Styled resume page

Take your HTML resume and add CSS: fonts, colors, spacing, a border. Uses phases 1-3. First page that actually looks good.

Beginner

Card component

Image, title, description, button. One reusable card with hover effect. Uses flexbox + spacing. First "UI component" you'll use everywhere.

Beginner

Pricing table

Three pricing tiers side by side, with the middle one emphasized. Uses flexbox, borders, colors. First page that looks like a real product site.

Intermediate

Responsive nav bar

Logo left, links right, collapses to a hamburger on mobile. Uses flexbox, media queries, transitions. First layout with real-world complexity.

Intermediate

Landing page

Hero, features grid, testimonials, footer. Uses grid, flexbox, typography. Looks like a real startup site — ready to show.

Advanced

Personal portfolio

Multi-section responsive site with animations. Uses every concept in the track. First project that can be your real portfolio.

❓ Frequently asked questions

How long does it take to learn CSS?

For basic selectors, colors, and fonts: 1–2 weeks. To build complete layouts with flexbox and grid: 4–6 weeks. To feel confident with responsive design, animations, and modern features: 8–12 weeks. CSS is easy to start and surprisingly deep to master. The good news: you can build real layouts in a weekend.

Should I learn CSS before JavaScript?

Yes. CSS is the styling layer, JavaScript is the behavior layer. Learn HTML (structure) first, then CSS (styling), then JavaScript (behavior). Reversing the order means you'll struggle to build the visual parts while learning complicated JS concepts at the same time.

What is the difference between flexbox and grid?

Flexbox is one-dimensional — row OR column. Grid is two-dimensional — rows AND columns. Use flexbox for component layout (nav menus, card contents, buttons). Use grid for page layout (dashboards, galleries, article layouts). Both are essential.

What is the box model in CSS?

Every element is a box with four parts: content, padding, border, margin. These four layers are the CSS box model. Understanding it is essential — most CSS layout bugs are box-model bugs. Use box-sizing: border-box to make width include padding and border.

What is the difference between id and class in CSS?

id is unique — one per page — styled with #id. class can be reused — many per page — styled with .class. Use classes for anything reusable. Use IDs for page-specific anchors and one-off elements. Most CSS should use classes, not IDs.

Why do my styles get overridden?

CSS has a specificity hierarchy. Inline styles beat IDs, IDs beat classes, classes beat element selectors. Higher specificity wins. If a rule isn't working, use DevTools to see what's overriding it. Fix by using more specific selectors or reordering the CSS — avoid !important.

What is responsive design in CSS?

Responsive design makes a page look good on all screen sizes. The core tool is media queries: @media (max-width: 768px) { ... }. Combined with flexible units, flexbox/grid layouts, and the viewport meta tag, responsive design lets one page serve phones, tablets, and desktops.

Should I use CSS frameworks like Tailwind or Bootstrap?

Learn CSS first. Frameworks are shortcuts that make sense once you understand what they're abstracting. If you start with a framework before understanding CSS, every custom design will be a struggle. Learn vanilla CSS, then choose a framework with informed judgment.

🔗 Continue your CSS path

🌐 External resources

← All courses
You're in the CSS track