{} CSS Mastery

From selectors to layout, effects, animation, and modern CSS architecture.

Lessons

Sign in to save progress
1 CSS Tutorial 2 CSS HOME 3 CSS Introduction 4 CSS Syntax 5 CSS Selectors 6 CSS How To 7 CSS Comments 8 CSS Errors 9 CSS Colors 10 CSS Backgrounds 11 CSS Borders 12 CSS Margins 13 CSS Padding 14 CSS Height / Width 15 CSS Box Model 16 CSS Outline 17 CSS Text 18 CSS Fonts 19 CSS Icons 20 CSS Links 21 CSS Lists 22 CSS Tables 23 CSS Display 24 CSS Max-width 25 CSS Position 26 CSS Position Offsets 27 CSS Z-index 28 CSS Overflow 29 CSS Float 30 CSS Inline-block 31 CSS Align 32 CSS Combinators 33 CSS Pseudo-classes 34 CSS Pseudo-elements 35 CSS Opacity 36 CSS Navigation Bars 37 CSS Dropdowns 38 CSS Image Gallery 39 CSS Image Sprites 40 CSS Attribute Selectors 41 CSS Forms 42 CSS Counters 43 CSS Units 44 CSS Inheritance 45 CSS Specificity 46 CSS !important 47 CSS Math Functions 48 CSS Optimization 49 CSS Accessibility 50 CSS Website Layout 51 CSS Advanced 52 CSS Rounded Corners 53 CSS Border Images 54 CSS Backgrounds 55 CSS Colors 56 CSS Gradients 57 CSS Shadows 58 CSS Text Effects 59 CSS Custom Fonts 60 CSS 2D Transforms 61 CSS 3D Transforms 62 CSS Transitions 63 CSS Animations 64 CSS Tooltips 65 CSS Image Styling 66 CSS Image Modal 67 CSS Image Centering 68 CSS Image Filters 69 CSS Image Shapes 70 CSS object-fit 71 CSS object-position 72 CSS Masking 73 CSS Buttons 74 CSS Pagination 75 CSS Multiple Columns 76 CSS User Interface 77 CSS Variables 78 CSS @property 79 CSS Box Sizing 80 CSS Media Queries 81 CSS Flexbox 82 Flexbox Intro 83 Flex Container 84 Flex Items 85 Flex Responsive 86 CSS Grid 87 Grid Intro 88 Grid Container 89 Grid Items 90 Grid 12-column Layout 91 CSS @supports 92 CSS Responsive 93 RWD Intro 94 RWD Viewport 95 RWD Grid View 96 RWD Media Queries 97 RWD Images 98 RWD Videos 99 RWD Frameworks 100 RWD Templates 101 CSS Certificate 102 CSS SASS 103 SASS Tutorial 104 CSS Templates 105 CSS Examples 106 CSS Editor 107 CSS Snippets 108 CSS Quiz 109 CSS Exercises 110 CSS Code Challenges 111 CSS Website 112 CSS Syllabus 113 CSS Study Plan 114 CSS Interview Prep 115 CSS Bootcamp 116 CSS Reference 117 CSS Selectors 118 CSS Combinators 119 CSS Pseudo-classes 120 CSS Pseudo-elements 121 CSS At-rules 122 CSS Functions 123 CSS Reference Aural 124 CSS Web Safe Fonts 125 CSS Animatable 126 CSS Units 127 CSS PX-EM Converter 128 CSS Colors 129 CSS Color Values 130 CSS Default Values 131 CSS Browser Support

CSS Flexbox

CSS Mastery Lesson 81 of 131 ~7 min read

Overview

CSS Flexbox introduces the concept, explains when to use it, and gives you a practical example you can adapt in a real project.

CSS Flexbox connects visual intent to predictable rules. The important habit is to understand which property is responsible for each effect, then keep the rule reusable, responsive, and easy to override later.

Core Ideas

  • Connect CSS Flexbox to a visible UI problem: layout, spacing, state, hierarchy, or motion.
  • Use small selectors and reusable values so the CSS stays easy to maintain.
  • Test the same rule at narrow and wide viewport sizes.
  • Prefer modern CSS features when they reduce extra markup or JavaScript.

Step by Step

  1. Start with the simplest selector that reaches the CSS Flexbox target.
  2. Add the core visual property and confirm the expected change.
  3. Layer responsive or state styles only after the base rule is working.
  4. Extract repeated colors, spacing, or sizes into reusable custom properties.

Beginner Explanation

CSS Flexbox is for one-dimensional layout. It is strongest when items need to align in one row or one column.

Think about the main axis first, then use gap, flex-basis, grow, shrink, justify-content, and align-items.

Flexbox is excellent for nav bars, toolbars, card rows, media objects, and small responsive component layouts.

Before You Start

  • Decide whether the layout is a row or a column.
  • Identify the parent flex container and the child flex items.
  • Use gap for spacing before adding margins to every child.

Key Properties and Concepts

  • display: flex turns a parent into a flex container.
  • flex-direction chooses row or column flow.
  • justify-content aligns along the main axis.
  • align-items aligns along the cross axis.

Plain-English Glossary

  • Main axis: the direction flex items flow.
  • Cross axis: the direction perpendicular to the main axis.
  • Flex basis: the starting size of a flex item.
  • Wrap: allowing items to move onto another line.

What You Will Learn

  • Explain what CSS Flexbox changes visually or structurally.
  • Identify the selector, property, value, and affected HTML element.
  • Edit the example in the code editor and predict the visual result before running it.
  • Debug the rule with browser developer tools when the style does not apply.

Where You Use This in Real Projects

You use CSS Flexbox for navigation bars, toolbars, media rows, action groups, and equal-height component rows.

It is especially useful when items need to align and wrap along one direction.

When to Use This

  • Use CSS Flexbox when items flow mainly in one direction.
  • Use Grid instead when rows and columns both define the layout.
  • Use normal flow when the browser already places the content correctly.

Browser and Accessibility Notes

  • Test zoom and narrow viewports so content does not overlap or disappear.
  • Visual order should not fight keyboard or reading order.
  • Overflow should be intentional and reachable, especially on small screens.
  • Use stable dimensions for media and fixed-format UI to reduce layout shift.

Code Example

.demo-target {
  display: flex;
  flex-wrap: wrap;
  gap: 1rem;
  align-items: stretch;
}

.box {
  flex: 1 1 12rem;
}

.featured {
  flex-grow: 2;
}

Another Example

.demo-target {
  display: flex;
  flex-wrap: wrap;
  align-items: stretch;
  gap: 1rem;
}

.box {
  flex: 1 1 12rem;
}

Example Explained

  • The selector chooses the part of the preview affected by CSS Flexbox.
  • Each declaration changes one visual behavior, such as color, spacing, size, layout, or motion.
  • The browser applies matching declarations, then the cascade decides which final value is used.
  • The example is intentionally small so you can change one property and see the result immediately.

How to Read This Example

  1. Start by reading the selector in the CSS Flexbox example.
  2. Find the matching element in the HTML preview or browser developer tools.
  3. Read each property and value pair from top to bottom.
  4. Change one value, run the editor, then inspect computed styles to confirm why the result changed.

More Practice Examples

Example 1: Build a wrapping action row

.css-nav {
  display: flex;
  flex-wrap: wrap;
  gap: .75rem;
  align-items: center;
}

.css-nav a:first-child {
  margin-inline-end: auto;
}
  • The nav becomes a flex container and the links become flex items.
  • flex-wrap lets links move to a new line instead of squeezing too tightly.
  • auto margin pushes later links away from the first link.

Example 2: Give cards equal flexible space

.box {
  flex: 1 1 12rem;
}

.featured {
  flex-basis: 18rem;
}
  • flex: 1 1 12rem means items can grow, shrink, and start from 12rem.
  • The featured card starts larger but can still adapt.
  • This pattern is useful for card rows and tool panels.

Code Editor Example

Open a ready-made starter for this lesson in the live HTML, CSS, and JavaScript editor. You can change the code, then click Run to see the result immediately.

Open in Code Editor

Checklist

  • Test the example at mobile, tablet, and desktop widths.
  • Keep selectors as simple as possible and watch specificity.
  • Prefer reusable tokens for color, spacing, and type.

Common Mistakes

  • Fixing one screen size with magic numbers instead of fluid constraints.
  • Creating selectors that are too specific to override later.
  • Animating layout-heavy properties when transform or opacity would be smoother.

Do and Don't

  • Do: use CSS Flexbox to solve a specific visual, layout, or maintainability problem.
  • Do: keep selectors readable and test the rule in the live editor.
  • Don't: add unrelated declarations to the same rule just because the selector already exists.
  • Don't: fight the cascade with repeated !important rules when a clearer selector or structure would work.

Practice Challenge

Paste the CSS Flexbox example into the editor and change one layout, color, or spacing value at a time so you can see which rule creates each visual effect.

Try These Changes

  • Change one value in the CSS Flexbox example and run it again.
  • Add a second selector that targets a different preview element.
  • Test the example at a narrow screen width and adjust one responsive value.
  • Open developer tools and identify the computed value that creates the visible result.

Quick Check

  • Question: What does the selector in CSS Flexbox target? Answer: The HTML element or elements that should receive the declarations.
  • Question: What should you change first when debugging CSS? Answer: One property or value at a time.
  • Question: Why test responsive sizes? Answer: CSS can look correct at one width and fail at another.

Revision Questions

  • Which selector, property, and value are most important in CSS Flexbox?
  • What visible result should the browser show after the rule applies?
  • What would happen if the selector matched more elements than expected?
  • How would you make the rule easier to reuse in another component?

Debugging Checks

  • Check that the stylesheet is loaded and the selector matches at least one element.
  • Inspect whether a declaration is crossed out because another rule wins.
  • Look for invalid property names, missing semicolons, unsupported values, and typoed class names.
  • Resize the preview to confirm CSS Flexbox still behaves correctly with different space.

Mini Project

Build a responsive toolbar or card row using CSS Flexbox. Use gap, wrapping, alignment, and one item that grows to fill remaining space.

Mastery Check

  • You can point to the exact CSS declaration that creates the CSS Flexbox behavior.
  • You can make the example responsive without duplicating the whole rule.
  • You can simplify or override the rule without using !important.
Create a free account to save which lessons you've finished. Save my progress