Columns
React Bootstrap 5 Columns component
Learn how to modify columns with a handful of options for alignment, ordering, and offsetting thanks to our flexbox grid system. Plus, see how to use column classes to manage widths of non-grid elements.
Note: Be sure to read the Grid page first before diving into how to modify and customize your grid columns.
How it works
-
Columns build on the grid’s flexbox architecture. Flexbox means we have options for changing individual columns and modifying groups of columns at the row level. You choose how columns grow, shrink, or otherwise change.
-
When building grid layouts, all content goes in columns. The hierarchy of Bootstrap’s grid goes from container to row to column to your content. On rare occasions, you may combine content and column, but be aware there can be unintended consequences.
-
Bootstrap includes predefined classes for creating fast, responsive layouts. With six breakpoints and a dozen columns at each grid tier, we have dozens of classes already built for you to create your desired layouts. This can be disabled via Sass if you wish.
Alignment
Use flexbox alignment utilities to vertically and horizontally align columns.
Vertical alignment
import React from 'react';
import { MDBCol } from 'mdb-react-ui-kit';
export default function App() {
return (
<>
<div class="d-flex align-items-start bg-light mb-3" style="height: 100px;">
<MDBCol>One of three columns</MDBCol>
<MDBCol>One of three columns</MDBCol>
<MDBCol>One of three columns</MDBCol>
</div>
<div class="d-flex align-items-start bg-light mb-3" style="height: 100px;">
<MDBCol>One of three columns</MDBCol>
<MDBCol>One of three columns</MDBCol>
<MDBCol>One of three columns</MDBCol>
</div>
<div class="d-flex align-items-start bg-light mb-3" style="height: 100px;">
<MDBCol>One of three columns</MDBCol>
<MDBCol>One of three columns</MDBCol>
<MDBCol>One of three columns</MDBCol>
</div>
</>
);
}
import React from 'react';
import { MDBContainer, MDBRow, MDBCol } from 'mdb-react-ui-kit';
export default function App() {
return (
<>
<MDBContainer>
<MDBRow>
<MDBCol start>
One of three columns
</MDBCol>
<MDBCol center>
One of three columns
</MDBCol>
<MDBCol end>
One of three columns
</MDBCol>
</MDBRow>
</MDBContainer>
</>
);
}
Horizontal alignment
import React from 'react';
import { MDBContainer, MDBRow, MDBCol } from 'mdb-react-ui-kit';
export default function App() {
return (
<MDBContainer>
<MDBRow start>
<MDBCol size='4' className='col-example'>
One of two columns
</MDBCol>
<MDBCol size='4' className='col-example'>
One of two columns
</MDBCol>
</MDBRow>
<MDBRow center>
<MDBCol size='4' className='col-example'>
One of two columns
</MDBCol>
<MDBCol size='4' className='col-example'>
One of two columns
</MDBCol>
</MDBRow>
<MDBRow end>
<MDBCol size='4' className='col-example'>
One of two columns
</MDBCol>
<MDBCol size='4' className='col-example'>
One of two columns
</MDBCol>
</MDBRow>
<MDBRow around>
<MDBCol size='4' className='col-example'>
One of two columns
</MDBCol>
<MDBCol size='4' className='col-example'>
One of two columns
</MDBCol>
</MDBRow>
<MDBRow between>
<MDBCol size='4' className='col-example'>
One of two columns
</MDBCol>
<MDBCol size='4' className='col-example'>
One of two columns
</MDBCol>
</MDBRow>
<MDBRow evenly>
<MDBCol size='4' className='col-example'>
One of two columns
</MDBCol>
<MDBCol size='4' className='col-example'>
One of two columns
</MDBCol>
</MDBRow>
</MDBContainer>
);
}
Column wrapping
If more than 12 columns are placed within a single row, each group of extra columns will, as one unit, wrap onto a new line.
Since 9 + 4 = 13 > 12, this 4-column-wide div gets wrapped onto a new line as one contiguous unit.
Subsequent columns continue along the new line.
import React from 'react';
import { MDBContainer, MDBRow, MDBCol } from 'mdb-react-ui-kit';
export default function App() {
return (
<MDBContainer>
<MDBRow>
<MDBCol size='9' className='col-example'>
.col-9
</MDBCol>
<MDBCol size='4' className='col-example'>
.col-4
<br />
Since 9 + 4 = 13 > 12, this 4-column-wide div gets wrapped onto a new line as one contiguous
unit.
</MDBCol>
<MDBCol size='6' className='col-example'>
.col-6
<br />
Subsequent columns continue along the new line.
</MDBCol>
</MDBRow>
</MDBContainer>
);
}
Column breaks
Breaking columns to a new line in flexbox requires a small hack: add an element with
width: 100%
wherever you want to wrap your columns to a new line. Normally this
is accomplished with multiple MDBRow
s, but not every implementation method can
account for this.
import React from 'react';
import { MDBContainer, MDBRow, MDBCol } from 'mdb-react-ui-kit';
export default function App() {
return (
<MDBContainer>
<MDBRow>
<MDBCol size='6' sm='3' className='col-example'>
.col-6 .col-sm-3
</MDBCol>
<MDBCol size='6' sm='3' className='col-example'>
.col-6 .col-sm-3
</MDBCol>
<div className='w-100'></div>
<MDBCol size='6' sm='3' className='col-example'>
.col-6 .col-sm-3
</MDBCol>
<MDBCol size='6' sm='3' className='col-example'>
.col-6 .col-sm-3
</MDBCol>
</MDBRow>
</MDBContainer>
);
}
You may also apply this break at specific breakpoints with our responsive display utilities.
import React from 'react';
import { MDBContainer, MDBRow, MDBCol } from 'mdb-react-ui-kit';
export default function App() {
return (
<MDBContainer>
<MDBRow>
<MDBCol size='6' sm='3' className='col-example'>
.col-6 .col-sm-3
</MDBCol>
<MDBCol size='6' sm='3' className='col-example'>
.col-6 .col-sm-3
</MDBCol>
<div className='w-100 d-none d-md-block'></div>
<MDBCol size='6' sm='3' className='col-example'>
.col-6 .col-sm-3
</MDBCol>
<MDBCol size='6' sm='3' className='col-example'>
.col-6 .col-sm-3
</MDBCol>
</MDBRow>
</MDBContainer>
);
}
Reordering
Order classes
Use .order-
classes for controlling the visual order of your
content. These classes are responsive, so you can set the order
by breakpoint
(e.g., .order-1.order-md-2
). Includes support for 1
through
5
across all six grid tiers.
import React from 'react';
import { MDBContainer, MDBRow, MDBCol } from 'mdb-react-ui-kit';
export default function App() {
return (
<MDBContainer>
<MDBRow>
<MDBCol className='col-example'>First in DOM, no order applied</MDBCol>
<MDBCol order='5' className='col-example'>
Second in DOM, with a larger order
</MDBCol>
<MDBCol order='1' className='col-example'>
Third in DOM, with an order of 1
</MDBCol>
</MDBRow>
</MDBContainer>
);
}
There are also responsive .order-first
and .order-last
classes
that change the order
of an element by applying order: -1
and
order: 6
, respectively. These classes can also be intermixed with the numbered
.order-*
classes as needed.
import React from 'react';
import { MDBContainer, MDBRow, MDBCol } from 'mdb-react-ui-kit';
export default function App() {
return (
<MDBContainer>
<MDBRow>
<MDBCol order='last' className='col-example'>
First in DOM, ordered last
</MDBCol>
<MDBCol className='col-example'>Second in DOM, unordered</MDBCol>
<MDBCol order='first' className='col-example'>
Third in DOM, ordered first
</MDBCol>
</MDBRow>
</MDBContainer>
);
}
Offsetting columns
You can offset grid columns in two ways: our responsive
offset="*"
attributes and our
margin utilities.
Offset attributes are sized to match columns while margins are more useful for quick layouts
where the width of the offset is variable.
Offset attributes
Move columns to the right using offsetMd="*"
attributes. These classes
increase the left margin of a column by *
columns. For example,
offsetMd="4"
moves md="4"
over four columns.
import React from 'react';
import { MDBContainer, MDBRow, MDBCol } from 'mdb-react-ui-kit';
export default function App() {
return (
<MDBContainer>
<MDBRow className='bg-light mb-3'>
<MDBCol md='4' className='col-example'>
.col-md-4
</MDBCol>
<MDBCol md='4' offsetMd='4' className='col-example'>
.col-md-4 .offset-md-4
</MDBCol>
</MDBRow>
<MDBRow className='bg-light mb-3'>
<MDBCol md='4' className='col-example'>
.col-md-4
</MDBCol>
<MDBCol md='4' offsetMd='4' className='col-example'>
.col-md-4 .offset-md-4
</MDBCol>
</MDBRow>
<MDBRow className='bg-light mb-3'>
<MDBCol md='6' offsetMd='3' className='col-example'>
.col-md-6 .offset-md-3
</MDBCol>
</MDBRow>
</MDBContainer>
);
}
In addition to column clearing at responsive breakpoints, you may need to reset offsets. See this in action in the grid example.
import React from 'react';
import { MDBContainer, MDBRow, MDBCol } from 'mdb-react-ui-kit';
export default function App() {
return (
<MDBContainer>
<MDBRow className='mb-3'>
<MDBCol sm='5' offsetMd='6' className='col-example'>
.col-sm-5 .col-md-6
</MDBCol>
<MDBCol sm='5' offsetSm='2' md='6' offsetMd='0' className='col-example'>
.col-sm-5 .offset-sm-2 .col-md-6 .offset-md-0
</MDBCol>
</MDBRow>
<MDBRow className='mb-3'>
<MDBCol sm='6' md='5' lg='6' className='col-example'>
.col-sm-5 .offset-sm-2 .col-md-6 .offset-md-0
</MDBCol>
<MDBCol sm='6' md='5' lg='6' offsetMd='2' offsetLg='0' className='col-example'>
.col-sm-6 .col-md-5 .offset-md-2 .col-lg-6 .offset-lg-0
</MDBCol>
</MDBRow>
</MDBContainer>
);
}
Margin utilities
With the move to flexbox, you can use margin utilities like
.mr-auto
to force sibling columns away from one another.
import React from 'react';
import { MDBContainer, MDBRow, MDBCol } from 'mdb-react-ui-kit';
export default function App() {
return (
<MDBContainer>
<MDBRow className='bg-light mb-3'>
<MDBCol md='4' className='col-example'>
.col-md-4
</MDBCol>
<MDBCol md='4' className='col-example ml-auto'>
.col-md-4 .ml-auto
</MDBCol>
</MDBRow>
<MDBRow className='bg-light mb-3'>
<MDBCol md='3' className='col-example ml-md-auto'>
.col-md-3 .ml-md-auto
</MDBCol>
<MDBCol md='3' className='col-example ml-md-auto'>
.col-md-3 .ml-md-auto
</MDBCol>
</MDBRow>
<MDBRow className='bg-light mb-3'>
<MDBCol size='auto' className='col-example .mr-auto'>
.col-auto .mr-auto
</MDBCol>
<MDBCol size='auto' className='col-example .mr-auto'>
.col-auto .mr-auto
</MDBCol>
</MDBRow>
</MDBContainer>
);
}
Standalone column classes
The col="*"
attributes can also be used outside a MDBCol
to give an
element a specific width. Whenever column classes are used as non direct children of a row,
the paddings are omitted.
import React from 'react';
import { MDBContainer, MDBRow, MDBCol } from 'mdb-react-ui-kit';
export default function App() {
return (
<MDBContainer>
<MDBCol size='3' className='col-example p-3 border'>
.col-3: width of 25%
</MDBCol>
<MDBCol sm='9' className='col-example p-3 border'>
.col-sm-9: width of 75% above sm breakpoint
</MDBCol>
</MDBContainer>
);
}
The classes can be used together with utilities to create responsive floated images. Make sure
to wrap the content in a
.clearfix
wrapper to clear the float if the text is shorter.
Donec ullamcorper nulla non metus auctor fringilla. Nulla vitae elit libero, a pharetra augue. Fusce dapibus, tellus ac cursus commodo, tortor mauris paddenstoel nibh, ut fermentum massa justo sit amet risus. Lorem ipsum dolor sit amet, consectetur adipiscing elit.
Sed posuere consectetur est at lobortis. Etiam porta sem malesuada magna mollis euismod. Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Id nullam tellus relem amet commodo telemque olemit. Sed posuere consectetur est at lobortis. Maecenas sed diam eget risus varius blandit sit amet non magna. Cras justo odio, dapibus ac facilisis in, egestas eget quam.
Donec id elit non mi porta gravida at eget metus. Aenean eu leo quam. Pellentesque ornare sem lantaarnpaal quam venenatis vestibulum. Donec sed odio dui. Maecenas faucibus mollis interdum. Nullam quis risus eget urna salsa tequila vel eu leo. Donec id elit non mi porta gravida at eget metus.
import React from 'react';
import { MDBContainer } from 'mdb-react-ui-kit';
export default function App() {
return (
<MDBContainer>
<div className='clearfix'>
<svg
className='bd-placeholder-img col-md-6 float-md-right mb-3 ml-md-3'
width='100%'
height='210'
xmlns='http://www.w3.org/2000/svg'
role='img'
aria-label='Placeholder: Responsive floated image'
preserveAspectRatio='xMidYMid slice'
focusable='false'
>
<title>Placeholder</title>
<rect width='100%' height='100%' fill='#868e96'></rect>
<text x='50%' y='50%' fill='#dee2e6' dy='.3em'>
Responsive floated image
</text>
</svg>
<p>
Donec ullamcorper nulla non metus auctor fringilla. Nulla vitae elit libero, a pharetra augue. Fusce
dapibus, tellus ac cursus commodo, tortor mauris paddenstoel nibh, ut fermentum massa justo sit amet
risus. Lorem ipsum dolor sit amet, consectetur adipiscing elit.
</p>
<p>
Sed posuere consectetur est at lobortis. Etiam porta sem malesuada magna mollis euismod. Duis mollis,
est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Id nullam tellus
relem amet commodo telemque olemit. Sed posuere consectetur est at lobortis. Maecenas sed diam eget
risus varius blandit sit amet non magna. Cras justo odio, dapibus ac facilisis in, egestas eget quam.
</p>
<p>
Donec id elit non mi porta gravida at eget metus. Aenean eu leo quam. Pellentesque ornare sem
lantaarnpaal quam venenatis vestibulum. Donec sed odio dui. Maecenas faucibus mollis interdum. Nullam
quis risus eget urna salsa tequila vel eu leo. Donec id elit non mi porta gravida at eget metus.
</p>
</div>
</MDBContainer>
);
}