Bootstrap 4 Grid System
Grid systems enable you to create advanced layouts using rows and columns. The Bootstrap grid system can have up to 12 columns, and you can specify how these columns scale for different viewport sizes.
Here's an example of a Bootstrap grid:
The numbers at the end of each class name represent the number of columns that the column spans. So
.col-sm-1 spans one column and
.col-sm-8 spans eight. The
sm means that the colspan applies to small devices and everything above. You can also use
xl for medium, large, and extra large.
Extra small devices are catered for by omitting the middle abbreviation. For example
.col-8 spans eight columns on extra small devices and up (in other words, all devices).
Stacked to Horizontal
The following example uses the same markup, but this time we use
md for "medium". This means that, if the viewport is smaller than "medium" (i.e. less than 768 pixels), the cells in the grid will be stacked on top of each other, and each cell will take up the full width.
If you are viewing this on a wide screen, this example might not look any different to the previous one. However, if you resize your browser down, the cells will eventually shift into the stacked position (and the previous example will remain intact).
The following table shows how different grid options work with different viewport sizes.
|Extra small <576px
|Extra large ≥1200px
|Horizontal at all times
|Collapsed to start, horizontal above breakpoints
|Max container width
|Number of columns
|30px (15px on each side of a column)
Note that with the introduction of version 4, Bootstrap now uses a 5 tier grid system (as opposed to the 4 tier grid system in Bootstrap 3).
Things to Remember with Grids
Grids should be placed within a container (i.e. using either
.container class or the
.container-fluid class) for proper padding and alignment.
Rows & Columns
Rows contain one or more columns. Columns contain the content. Only columns can be immediate children of rows.
Columns contain padding. However, the padding on the first and last columns is offset by a negative margin on the row. This is why the above examples are outdented — it is so the content within the grid lines up with content outside the grid.
More than 12 Columns per Row?
If more than 12 columns are placed in a row, the columns will wrap to a new line. That is, columns will wrap as a group. So for example, if a row contains a
col-md-10 and a
col-md-3, the whole
col-md-3 will wrap to the new line.
Less than 12 Columns per Row?
You don't have to use up all 12 columns. You can use any number of columns up to 12 (before it will wrap to the next line). For example, you could have a row where the total column count spans say, 3 columns.
Grid classes apply to devices with screen widths greater than or equal to the breakpoint sizes, and override grid classes targeted at smaller devices. So using any
.col-sm-* class will affect not only small viewports, but also medium, large, and extra large (unless there's also a
You can use multiple class sizes for a given element. For example, you could use
class="col-sm-10 col-md-6" to specify 10 columns for small viewports and 6 columns for medium and large viewports.