Skip to main content
Bulma provides comprehensive flexbox helper classes to create flexible, responsive layouts without writing custom CSS.

Flex Container

Make an element a flex container with display flex classes.
<!-- Block-level flex container -->
<div class="is-flex">
  <div>Item 1</div>
  <div>Item 2</div>
  <div>Item 3</div>
</div>

<!-- Inline flex container -->
<div class="is-inline-flex">
  <div>Item 1</div>
  <div>Item 2</div>
</div>

Container Classes

ClassCSS PropertyDescription
is-flexdisplay: flexBlock-level flex container
is-inline-flexdisplay: inline-flexInline flex container
Alternative syntax: You can also use is-display-flex and is-display-inline-flex.

Flex Direction

Control the direction of flex items.
<!-- Row (default) -->
<div class="is-flex is-flex-direction-row">
  <div>1</div>
  <div>2</div>
  <div>3</div>
</div>

<!-- Row reversed -->
<div class="is-flex is-flex-direction-row-reverse">
  <div>1</div>
  <div>2</div>
  <div>3</div>
</div>

<!-- Column -->
<div class="is-flex is-flex-direction-column">
  <div>1</div>
  <div>2</div>
  <div>3</div>
</div>

<!-- Column reversed -->
<div class="is-flex is-flex-direction-column-reverse">
  <div>1</div>
  <div>2</div>
  <div>3</div>
</div>

Direction Classes

ClassCSS ValueDescription
is-flex-direction-rowflex-direction: rowHorizontal layout (left to right)
is-flex-direction-row-reverseflex-direction: row-reverseHorizontal layout (right to left)
is-flex-direction-columnflex-direction: columnVertical layout (top to bottom)
is-flex-direction-column-reverseflex-direction: column-reverseVertical layout (bottom to top)

Flex Wrap

Control whether flex items wrap onto multiple lines.
<!-- No wrap (default) -->
<div class="is-flex is-flex-wrap-nowrap">
  <div>Item 1</div>
  <div>Item 2</div>
  <div>Item 3</div>
</div>

<!-- Wrap -->
<div class="is-flex is-flex-wrap-wrap">
  <div>Item 1</div>
  <div>Item 2</div>
  <div>Item 3</div>
  <div>Item 4</div>
  <div>Item 5</div>
</div>

<!-- Wrap reversed -->
<div class="is-flex is-flex-wrap-wrap-reverse">
  <div>Item 1</div>
  <div>Item 2</div>
  <div>Item 3</div>
</div>

Wrap Classes

ClassCSS ValueDescription
is-flex-wrap-nowrapflex-wrap: nowrapSingle line (no wrapping)
is-flex-wrap-wrapflex-wrap: wrapWrap to multiple lines
is-flex-wrap-wrap-reverseflex-wrap: wrap-reverseWrap in reverse order

Justify Content

Align flex items along the main axis.
<!-- Flex start -->
<div class="is-flex is-justify-content-flex-start">
  <div>1</div>
  <div>2</div>
  <div>3</div>
</div>

<!-- Center -->
<div class="is-flex is-justify-content-center">
  <div>1</div>
  <div>2</div>
  <div>3</div>
</div>

<!-- Flex end -->
<div class="is-flex is-justify-content-flex-end">
  <div>1</div>
  <div>2</div>
  <div>3</div>
</div>

<!-- Space between -->
<div class="is-flex is-justify-content-space-between">
  <div>1</div>
  <div>2</div>
  <div>3</div>
</div>

<!-- Space around -->
<div class="is-flex is-justify-content-space-around">
  <div>1</div>
  <div>2</div>
  <div>3</div>
</div>

<!-- Space evenly -->
<div class="is-flex is-justify-content-space-evenly">
  <div>1</div>
  <div>2</div>
  <div>3</div>
</div>

Justify Content Classes

ClassDescription
is-justify-content-flex-startAlign to start of container
is-justify-content-flex-endAlign to end of container
is-justify-content-centerCenter items
is-justify-content-space-betweenSpace between items
is-justify-content-space-aroundSpace around items
is-justify-content-space-evenlyEven space between items
is-justify-content-startAlign to start (logical)
is-justify-content-endAlign to end (logical)
is-justify-content-leftAlign to left
is-justify-content-rightAlign to right

Align Items

Align flex items along the cross axis.
<!-- Stretch (default) -->
<div class="is-flex is-align-items-stretch" style="height: 100px;">
  <div>1</div>
  <div>2</div>
  <div>3</div>
</div>

<!-- Flex start -->
<div class="is-flex is-align-items-flex-start" style="height: 100px;">
  <div>1</div>
  <div>2</div>
  <div>3</div>
</div>

<!-- Center -->
<div class="is-flex is-align-items-center" style="height: 100px;">
  <div>1</div>
  <div>2</div>
  <div>3</div>
</div>

<!-- Flex end -->
<div class="is-flex is-align-items-flex-end" style="height: 100px;">
  <div>1</div>
  <div>2</div>
  <div>3</div>
</div>

<!-- Baseline -->
<div class="is-flex is-align-items-baseline" style="height: 100px;">
  <div class="is-size-1">1</div>
  <div class="is-size-4">2</div>
  <div class="is-size-6">3</div>
</div>

Align Items Classes

ClassDescription
is-align-items-stretchStretch to fill container
is-align-items-flex-startAlign to start of cross axis
is-align-items-flex-endAlign to end of cross axis
is-align-items-centerCenter on cross axis
is-align-items-baselineAlign baselines
is-align-items-startAlign to start (logical)
is-align-items-endAlign to end (logical)
is-align-items-self-startAlign to self start
is-align-items-self-endAlign to self end

Align Content

Align flex lines when there’s extra space in the cross axis (multi-line flex containers).
<!-- Flex start -->
<div class="is-flex is-flex-wrap-wrap is-align-content-flex-start" 
     style="height: 200px;">
  <div>1</div>
  <div>2</div>
  <div>3</div>
  <div>4</div>
</div>

<!-- Center -->
<div class="is-flex is-flex-wrap-wrap is-align-content-center" 
     style="height: 200px;">
  <div>1</div>
  <div>2</div>
  <div>3</div>
  <div>4</div>
</div>

<!-- Space between -->
<div class="is-flex is-flex-wrap-wrap is-align-content-space-between" 
     style="height: 200px;">
  <div>1</div>
  <div>2</div>
  <div>3</div>
  <div>4</div>
</div>

Align Content Classes

ClassDescription
is-align-content-flex-startPack lines to start
is-align-content-flex-endPack lines to end
is-align-content-centerCenter lines
is-align-content-space-betweenSpace between lines
is-align-content-space-aroundSpace around lines
is-align-content-space-evenlyEven space between lines
is-align-content-stretchStretch lines
is-align-content-startPack to start (logical)
is-align-content-endPack to end (logical)
is-align-content-baselineAlign to baseline

Align Self

Override align-items for individual flex items.
<div class="is-flex is-align-items-flex-start" style="height: 100px;">
  <div>Normal</div>
  <div class="is-align-self-center">Centered</div>
  <div class="is-align-self-flex-end">End</div>
  <div class="is-align-self-stretch">Stretched</div>
</div>

Align Self Classes

ClassDescription
is-align-self-autoInherit from parent
is-align-self-flex-startAlign to start
is-align-self-flex-endAlign to end
is-align-self-centerCenter on cross axis
is-align-self-baselineAlign to baseline
is-align-self-stretchStretch to fill

Flex Grow and Shrink

Control how flex items grow or shrink.
<!-- Flex grow -->
<div class="is-flex">
  <div class="is-flex-grow-0">No grow</div>
  <div class="is-flex-grow-1">Grow 1x</div>
  <div class="is-flex-grow-2">Grow 2x</div>
</div>

<!-- Flex shrink -->
<div class="is-flex">
  <div class="is-flex-shrink-0">No shrink</div>
  <div class="is-flex-shrink-1">Shrink 1x</div>
  <div class="is-flex-shrink-2">Shrink 2x</div>
</div>

Flex Grow Classes

ClassCSS Value
is-flex-grow-0flex-grow: 0
is-flex-grow-1flex-grow: 1
is-flex-grow-2flex-grow: 2
is-flex-grow-3flex-grow: 3
is-flex-grow-4flex-grow: 4
is-flex-grow-5flex-grow: 5

Flex Shrink Classes

ClassCSS Value
is-flex-shrink-0flex-shrink: 0
is-flex-shrink-1flex-shrink: 1
is-flex-shrink-2flex-shrink: 2
is-flex-shrink-3flex-shrink: 3
is-flex-shrink-4flex-shrink: 4
is-flex-shrink-5flex-shrink: 5

Practical Examples

Centered Content

<div class="is-flex is-justify-content-center is-align-items-center" 
     style="height: 200px; border: 1px solid #ddd;">
  <div>
    <h3>Perfectly Centered</h3>
    <p>Both horizontally and vertically</p>
  </div>
</div>
<nav class="is-flex is-justify-content-space-between is-align-items-center p-4">
  <div class="is-flex is-align-items-center">
    <img src="logo.png" alt="Logo" style="height: 40px;">
    <span class="ml-3">Brand</span>
  </div>
  <div class="is-flex is-align-items-center">
    <a class="mr-4">Home</a>
    <a class="mr-4">About</a>
    <a>Contact</a>
  </div>
</nav>

Card Layout

<div class="box is-flex is-flex-direction-column" style="height: 300px;">
  <div class="mb-4">
    <h4 class="is-size-4">Card Title</h4>
  </div>
  <div class="is-flex-grow-1">
    <p>Card content that grows to fill available space</p>
  </div>
  <div class="is-flex is-justify-content-flex-end mt-4">
    <button class="button mr-2">Cancel</button>
    <button class="button is-primary">Save</button>
  </div>
</div>

Responsive Grid

<div class="is-flex is-flex-wrap-wrap is-justify-content-space-between">
  <div style="width: 30%; min-width: 250px;" class="mb-4">
    <div class="box">Item 1</div>
  </div>
  <div style="width: 30%; min-width: 250px;" class="mb-4">
    <div class="box">Item 2</div>
  </div>
  <div style="width: 30%; min-width: 250px;" class="mb-4">
    <div class="box">Item 3</div>
  </div>
</div>

Equal Height Columns

<div class="is-flex">
  <div class="is-flex-grow-1 box mr-2">
    <h4>Column 1</h4>
    <p>Short content</p>
  </div>
  <div class="is-flex-grow-1 box mr-2">
    <h4>Column 2</h4>
    <p>This column has much more content that spans multiple lines, but all columns will have equal height.</p>
  </div>
  <div class="is-flex-grow-1 box">
    <h4>Column 3</h4>
    <p>Medium content here</p>
  </div>
</div>
Combine flexbox helpers with spacing helpers for precise control over your layouts. For example: is-flex is-justify-content-center is-align-items-center p-5 m-4
Flexbox helpers work seamlessly with Bulma’s responsive breakpoints. Add responsive modifiers like -mobile, -tablet, or -desktop to any display class to show/hide flex containers at different screen sizes.

Build docs developers (and LLMs) love