4.2 layouts.layout-3col Responsive 3-column grid
The .layout-3col layout is a responsive grid layout that is:
- 1 column at mobile sizes
- 2 columns at tablet sizes
- 3 columns at desktop sizes
The .layout-3col class is used on the container div for the layout. A grid
item in the container can be created using one of the following classes:
.layout-3col__full: 3-column wide grid item; starts a new row.layout-3col__left-content: 2-column wide grid item, spanning columns 1 and 2; starts a new row.layout-3col__right-content: 2-column wide grid item, spanning columns 2 and 3; starts a new row.layout-3col__left-sidebar: 1-column wide grid item spanning column 1; starts a new row on tablet screens.layout-3col__first-left-sidebar: 1-column wide grid item spanning column 1; spans column 1 and starts a new row on tablet screens only.layout-3col__second-left-sidebar: 1-column wide grid item spanning column 1; spans column 2 on tablet screens only.layout-3col__right-sidebar: 1-column wide grid item spanning column 3; starts a new row on tablet screens.layout-3col__col-1: 1-column wide grid item spanning column 1; starts a new row.layout-3col__col-2: 1-column wide grid item spanning column 2.layout-3col__col-3: 1-column wide grid item spanning column 3; starts a new row on tablet screens.layout-3col__col-4: At tablet sizes, the__col-xgrid items will form an irregular layout of 2 items in the first row and 1 item in the second row. The__col-4is a "hidden" item that does not appear on the large-screen 3-column grid, but is a 1-column wide grid item spanning column 2 on tablet screens..layout-3col__col-x: 1-column wide grid item spanning column 1; when several of these are used inside a.layout-3col__grid-item-containeror.layout-3col, the first one is positioned like__col-1, the second like__col-2, etc.
There are 2 ways to do a nested grid:
- Place a grid container div inside a grid item. Just apply the normal classes to the nested grid container and its grid items.
- The grid item's div is also the grid container for the nested grid. In
this case, the
.layout3-col__grid-item-containerclass should be added to the div to ensure its nested grid items align with the parent grid.
Example
The
.layout-3col__full grid item.
The
.layout-3col__left-content grid item.
The
.layout-3col__right-content grid item.
The
.layout-3col__right-content grid item.
The
.layout-3col__col-1 grid item.
The
.layout-3col__col-2 grid item.
The
.layout-3col__col-3 grid item. Don't forget to look for the .layout-3col__col-4 grid item at tablet sizes.
The
.layout-3col__col-4 grid item.
The first
.layout-3col__col-x grid item in this nested grid.
The second
.layout-3col__col-x grid item in this nested grid.
The third
.layout-3col__col-x grid item in this nested grid.
The fourth
.layout-3col__col-x grid item in this nested grid.
The fifth
.layout-3col__col-x grid item in this nested grid.
The sixth
.layout-3col__col-x grid item in this nested grid.
Markup: layouts/layout-3col/layout-3col.twig
<div class="layout-3col {{modifier_class}}">
<div class="layout-3col__full">
The <code>.layout-3col__full</code> grid item.
</div>
<div class="layout-3col__left-content">
The <code>.layout-3col__left-content</code> grid item.
</div>
<div class="layout-3col__right-sidebar">
The <code>.layout-3col__right-sidebar</code> grid item.
</div>
<div class="layout-3col__right-content">
The <code>.layout-3col__right-content</code> grid item.
</div>
<div class="layout-3col__left-sidebar">
The <code>.layout-3col__left-sidebar</code> grid item.
</div>
<div class="layout-3col__right-content">
The <code>.layout-3col__right-content</code> grid item.
</div>
<div class="layout-3col__first-left-sidebar">
The <code>.layout-3col__first-left-sidebar</code> grid item.
</div>
<div class="layout-3col__second-left-sidebar">
The <code>.layout-3col__second-left-sidebar</code> grid item.
</div>
<div class="layout-3col__col-1">
The <code>.layout-3col__col-1</code> grid item.
</div>
<div class="layout-3col__col-2">
The <code>.layout-3col__col-2</code> grid item.
</div>
<div class="layout-3col__col-3">
The <code>.layout-3col__col-3</code> grid item. Don't forget to look for the <code>.layout-3col__col-4</code> grid item at tablet sizes.
</div>
<div class="layout-3col__col-4">
The <code>.layout-3col__col-4</code> grid item.
</div>
<div class="layout-3col__full layout-3col__grid-item-container">
<div class="layout-3col__col-x">
The first <code>.layout-3col__col-x</code> grid item in this nested grid.
</div>
<div class="layout-3col__col-x">
The second <code>.layout-3col__col-x</code> grid item in this nested grid.
</div>
<div class="layout-3col__col-x">
The third <code>.layout-3col__col-x</code> grid item in this nested grid.
</div>
<div class="layout-3col__col-x">
The fourth <code>.layout-3col__col-x</code> grid item in this nested grid.
</div>
<div class="layout-3col__col-x">
The fifth <code>.layout-3col__col-x</code> grid item in this nested grid.
</div>
<div class="layout-3col__col-x">
The sixth <code>.layout-3col__col-x</code> grid item in this nested grid.
</div>
</div>
</div>
Source:
layouts/layout-3col/_layout-3col.scss, line 1