Skip to main content

Column

Overview

The Column component provides a single responsive layout column using Bulma's flexbox-based column system.

It supports all Bulma column size modifiers, responsive sizes and offsets, color/background helpers, "narrow" behavior, and utility/HTML props. Use together with Columns for powerful, declarative layouts.


Import

import { Column } from '@allxsmith/bestax-bulma';

Usage

Basic Columns Example

This example shows the Column component used within a Columns container. Each Column can accept Bulma size, color, and offset props to control its width and appearance. Use this pattern for building flexible horizontal layouts with multiple columns.

import { Columns, Column } from '@allxsmith/bestax-bulma';
import { Notification } from '@allxsmith/bestax-bulma/elements/Notification';

<Columns>
  <Column>
    <Notification color="primary">First column</Notification>
  </Column>
  <Column>
    <Notification color="info">Second column</Notification>
  </Column>
  <Column>
    <Notification color="link">Third column</Notification>
  </Column>
  <Column>
    <Notification color="warning">Fourth column</Notification>
  </Column>
</Columns>;


Column Sizes

This section demonstrates the various size options for columns. Sizes can be set using Bulma's fractional values or keywords like full, half, one-third, etc. Combine these with offset props to control the column's position within the row.

<>
  <Columns>
    <Column size="four-fifths">
      <Notification color="primary">is-four-fifths</Notification>
    </Column>
    <Column>
      <Notification color="primary">Auto</Notification>
    </Column>
    <Column>
      <Notification color="primary">Auto</Notification>
    </Column>
  </Columns>

  <Columns>
    <Column size="three-quarters">
      <Notification color="primary">is-three-quarters</Notification>
    </Column>
    <Column>
      <Notification color="primary">Auto</Notification>
    </Column>
    <Column>
      <Notification color="primary">Auto</Notification>
    </Column>
  </Columns>

  <Columns>
    <Column size="two-thirds">
      <Notification color="primary">is-two-thirds</Notification>
    </Column>
    <Column>
      <Notification color="primary">Auto</Notification>
    </Column>
    <Column>
      <Notification color="primary">Auto</Notification>
    </Column>
  </Columns>

  <Columns>
    <Column size="three-fifths">
      <Notification color="primary">is-three-fifths</Notification>
    </Column>
    <Column>
      <Notification color="primary">Auto</Notification>
    </Column>
    <Column>
      <Notification color="primary">Auto</Notification>
    </Column>
  </Columns>

  <Columns>
    <Column size="half">
      <Notification color="primary">is-half</Notification>
    </Column>
    <Column>
      <Notification color="primary">Auto</Notification>
    </Column>
    <Column>
      <Notification color="primary">Auto</Notification>
    </Column>
  </Columns>

  <Columns>
    <Column size="two-fifths">
      <Notification color="primary">is-two-fifths</Notification>
    </Column>
    <Column>
      <Notification color="primary">Auto</Notification>
    </Column>
    <Column>
      <Notification color="primary">Auto</Notification>
    </Column>
  </Columns>

  <Columns>
    <Column size="one-third">
      <Notification color="primary">is-one-third</Notification>
    </Column>
    <Column>
      <Notification color="primary">Auto</Notification>
    </Column>
    <Column>
      <Notification color="primary">Auto</Notification>
    </Column>
  </Columns>

  <Columns>
    <Column size="one-quarter">
      <Notification color="primary">is-one-quarter</Notification>
    </Column>
    <Column>
      <Notification color="primary">Auto</Notification>
    </Column>
    <Column>
      <Notification color="primary">Auto</Notification>
    </Column>
  </Columns>

  <Columns>
    <Column size="one-fifth">
      <Notification color="primary">is-one-fifth</Notification>
    </Column>
    <Column>
      <Notification color="primary">Auto</Notification>
    </Column>
    <Column>
      <Notification color="primary">Auto</Notification>
    </Column>
  </Columns>
</>


12 Column System

In Bulma's 12 column system, you can specify column sizes from 1 to 12, allowing for a wide range of layout possibilities. This example demonstrates how each column size behaves, including automatic sizing for remaining space.

<>
  {[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12].map(num => (
    <Columns key={num}>
      <Column size={num}>
        <Notification color="primary">
          {num === 1 ? 1 : `is-${num}`}
        </Notification>
      </Column>
      {num === 11 && (
        <Column>
          <Notification color="primary">1</Notification>
        </Column>
      )}
      {num < 11 && (
        <Column>
          <Notification color="primary">Auto</Notification>
        </Column>
      )}
      {num < 10 && (
        <Column>
          <Notification color="primary">Auto</Notification>
        </Column>
      )}
    </Columns>
  ))}
</>


Responsive Column Sizes

Columns can have different sizes at different breakpoints, allowing for a fully responsive design. This example shows a column that changes size from mobile to desktop views.

<Columns isMobile>
  <Column
    sizeMobile="three-quarters"
    sizeTablet="two-thirds"
    sizeDesktop="half"
    sizeWidescreen="one-third"
    sizeFullhd="one-quarter"
  >
    <Notification color="primary">
      <code>sizeMobile="three-quarters"</code>
      <br />
      <code>sizeTablet="two-thirds"</code>
      <br />
      <code>sizeDesktop="half"</code>
      <br />
      <code>sizeWidescreen="one-third"</code>
      <br />
      <code>sizeFullhd="one-quarter"</code>
    </Notification>
  </Column>
  <Column>
    <Notification color="primary">2</Notification>
  </Column>
  <Column>
    <Notification color="primary">3</Notification>
  </Column>
  <Column>
    <Notification color="primary">4</Notification>
  </Column>
  <Column>
    <Notification color="primary">5</Notification>
  </Column>
</Columns>


Offsets

Offsets are used to push columns to the right, creating space between columns. This is particularly useful for centering columns or creating specific layouts.

<>
  <Columns isMobile>
    <Column size="half" offset="one-quarter">
      <Notification color="primary">is-half is-offset-one-quarter</Notification>
    </Column>
  </Columns>
  <Columns isMobile>
    <Column size="three-fifths" offset="one-fifth">
      <Notification color="primary">
        is-three-fifths is-offset-one-fifth
      </Notification>
    </Column>
  </Columns>
  <Columns isMobile>
    <Column size={4} offset={8}>
      <Notification color="primary">is-4 is-offset-8</Notification>
    </Column>
  </Columns>
  <Columns isMobile>
    <Column size={11} offset={1}>
      <Notification color="primary">is-11 is-offset-1</Notification>
    </Column>
  </Columns>
</>


Narrow Columns

Narrow columns only take up as much width as their content, which can be useful for sidebar menus, buttons, or any content that doesn't need to stretch the full width of the column.

<Columns>
  <Column isNarrow>
    <Notification color="primary" style={{ width: 180 }}>
      <Strong>Narrow column</Strong>
      <br />
      <Span>This column is only as wide as it needs to be, 180px wide.</Span>
    </Notification>
  </Column>
  <Column>
    <Notification color="primary">
      <Strong>Flexible column</Strong>
      <br />
      <Span>This column will take up the remaining space available.</Span>
    </Notification>
  </Column>
</Columns>


Notes

  • Use the Columns component as a parent for Column children for proper row-column behavior.
  • All column, offset, and narrow props support responsive variants.
  • Combine with Bulma helper props for utility-first styling.
  • All standard <div> HTML props are supported.

See Also


Props

PropTypeDefaultDescription
classNamestringAdditional CSS classes for the column.
textColorBulma color | 'inherit' | 'current'Text color.
color'primary' | 'link' | 'info' | 'success' | 'warning' | 'danger'Bulma color modifier for the column.
bgColorBulma color | 'inherit' | 'current'Background color.
sizeBulmaColumnSizeColumn size (see Bulma docs).
sizeMobileBulmaColumnSizeSize for mobile breakpoint.
sizeTabletBulmaColumnSizeSize for tablet breakpoint.
sizeDesktopBulmaColumnSizeSize for desktop breakpoint.
sizeWidescreenBulmaColumnSizeSize for widescreen breakpoint.
sizeFullhdBulmaColumnSizeSize for fullhd breakpoint.
offsetBulmaColumnSizeOffset for column.
offsetMobileBulmaColumnSizeOffset for mobile.
offsetTabletBulmaColumnSizeOffset for tablet.
offsetDesktopBulmaColumnSizeOffset for desktop.
offsetWidescreenBulmaColumnSizeOffset for widescreen.
offsetFullhdBulmaColumnSizeOffset for fullhd.
isNarrowbooleanfalseColumn is only as wide as its content.
isNarrowMobilebooleanfalseThe column is narrow on mobile.
isNarrowTabletbooleanfalseThe column is narrow on tablet.
isNarrowTouchbooleanfalseThe column is narrow on touch devices.
isNarrowDesktopbooleanfalseThe column is narrow on desktop.
isNarrowWidescreenbooleanfalseThe column is narrow on widescreen.
isNarrowFullhdbooleanfalseThe column is narrow on fullhd.
childrenReact.ReactNodeChildren to render inside the column.
...All standard <div> attributes and Bulma helper propsSee Helper Props

Types:

  • BulmaColumnSize: number | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9' | '10' | '11' | '12' | 'full' | 'half' | 'one-third' | 'two-thirds' | 'one-quarter' | 'three-quarters' | 'one-fifth' | 'two-fifths' | 'three-fifths' | 'four-fifths' — Possible values for Bulma column size: a number 1–12 (as a number or a numeric string, 7 and "7" are equivalent) or a named fraction.

CSS & Sass Variables

Bulma declares these variables globally rather than on Column's own element, so the defaults come from the theme. Override them anywhere above the component — on the element itself (via className/style) for a one-off, or on :root to retheme every instance. See Theme.

CSS VariableSass VariableDefault
--bulma-column-gap$column-gap0.75rem