Skip to content
browserutils
How-to

How to Generate CSS Flexbox Layouts

Build flexible CSS layouts visually by configuring flex container and item properties, then copy the generated CSS code.

4 steps
  1. 1

    Set container properties

    Configure the flex container by choosing flex-direction, justify-content, align-items, flex-wrap, and gap values using visual controls.

  2. 2

    Configure flex items

    Add items and set their individual flex-grow, flex-shrink, flex-basis, and align-self properties to control how they behave within the container.

  3. 3

    Preview the layout

    See a live preview of your flexbox layout as you adjust properties. Resize the preview area to test how items respond at different widths.

  4. 4

    Copy the CSS code

    Copy the generated CSS for both the container and items. Paste it into your stylesheet and apply the class names to your HTML elements.

Flexbox is the foundation of modern CSS layouts, but remembering which combination of justify-content, align-items, and flex-wrap produces the layout you want can be frustrating. The CSS Flexbox Generator lets you configure layouts visually and generates the exact CSS you need, eliminating the trial-and-error cycle.

Understanding flexbox layout

Flexbox works along two axes: the main axis (defined by flex-direction) and the cross axis (perpendicular to it). All flexbox behavior stems from how items are distributed along these two axes.

The container properties control the overall layout: flex-direction sets the main axis (row or column), justify-content distributes items along the main axis, align-items aligns items along the cross axis, flex-wrap controls whether items wrap to new lines, and gap sets spacing between items.

Item properties control individual behavior within the container: flex-grow determines how extra space is distributed (a value of 1 means the item grows to fill available space), flex-shrink controls how items shrink when space is tight, and flex-basis sets the initial size before growing or shrinking is applied.

The shorthand flex: 1 1 0% (grow, shrink, basis) is the most common pattern for equal-width items. For a fixed-width item that does not flex, use flex: 0 0 auto with an explicit width.

Tips and best practices

  • Use gap instead of margins. The gap property on the flex container is cleaner than adding margins to items. It only adds space between items, not around the outside edges.
  • Start with flex-wrap: wrap for responsive layouts. Without wrapping, flex items will shrink indefinitely to fit on one line, often squishing content. Wrapping lets items flow to new lines when space runs out.
  • Use min-width: 0 on flex items to prevent overflow. By default, flex items will not shrink below their content size. If long text or large images overflow, adding min-width: 0 allows the item to shrink properly.
  • Combine flex-grow with flex-basis for proportional layouts. Instead of using percentages, set flex-basis: 0 and use different flex-grow values to create proportional columns (e.g., flex: 2 and flex: 1 for a 2:1 ratio).

Common issues

  • Items not centering vertically. Make sure the flex container has an explicit height. If the container’s height matches its content height, there is no extra space for align-items: center to work with.
  • Last row of wrapped items stretching unexpectedly. When using justify-content: space-between with wrapping, the last row may spread items across the full width if it has fewer items. Use gap with flex-basis percentages instead for grid-like wrapped layouts.
  • Flex items ignoring width. When flex-basis is set, it overrides width in the main axis direction. Use flex-basis instead of width for sizing flex items, or set flex-basis: auto to respect the width property.
Try it now

Open CSS Flexbox Generator

Use the CSS Flexbox Generator tool directly — no sign-up needed. Runs entirely in your browser.

Open CSS Flexbox Generator