--- title: Flex Grid description: New in Foundation 6 is a Flexbox-powered grid, which you can use instead of the traditional float grid. sass: scss/grid/_flex-grid.scss video: tpmQcZSPw4Q ---

Become a master of the Foundation Grids to create complex layouts faster and with less code. The new XY Grid is the newest and most powerful version. Stay up-to-date with all the new features in Foundation 6.4 and learn how to migrate to the XY Grid with our online webinar training. You’ll also learn all the useful UI components and Foundation JavaScript to really crush your projects.

Get registered for an upcoming Foundation training →
The flex grid works very similarly to the standard float grid, but includes a number of useful features only possible with flexbox, like horizontal and vertical alignment, automatic sizing, and easier source ordering. --- ## Browser support The flex grid is only supported in Chrome, Firefox, Safari 6+, IE10+, iOS 7+, and Android 4.4+. Flexbox is supported in Android 2, but not reliably enough for use with this grid. ([View flexbox browser support.](http://caniuse.com/#feat=flexbox)) We recommend only using the flex grid on projects that can live with purely cutting-edge browser support.

In Firefox 43+, images in flex columns may overflow their container. To fix this, add a defined width to any images inside a flex column, or use width: 100% for full-bleed images.

--- ## Importing
Watch this part in video
**From Foundation v6.4, the Flex Grid is disabled by default**, replaced by the new [XY Grid](xy-grid.html). Unless you need to support IE 10, it is recommended to use the XY Grid.
To use the Flex Grid in Foundation v6.4+, you need to: * In CDN link or package managers: import `foundation-flex.css` in place of `foundation.css`. * In Sass: set `$xy-grid` to `false`. If you're using the Sass version of Foundation, you can enable a framework-wide flexbox mode, and add exports for the flex grid and flexbox helper classes. [Learn more about enabling flexbox mode.](flexbox.html#enabling-flexbox-mode) You can manually generate the Flex Grid with: ```scss @import 'foundation'; // @include foundation-grid; @include foundation-flex-classes; @include foundation-flex-grid; ```

The flex grid uses the same settings variables as the float grid to adjust gutter size, column count, and so on. Refer to the Sass variable reference for the default grid to see how the flex grid can be customized.

The standard grid and flex grid use some of the same classes, namely .row and .column, and don't play nice together. If you want to use both in the same project, we recommend using the Sass mixins for each grid, instead of the default CSS.

--- ## Basics The structure of the flex grid is identical to that of the float grid. Rows use the class `.row`, and columns use the class `.column` (or `.columns`). Basic percentage-based sizing can also be done using the same grid classes you're used to: `.small-6`, `.medium-12`, and so on.

Watch this part in video

edit on codepen button
```html_example
6 columns
6 columns
12/6/4 columns
12/6/8 columns
``` --- ## Advanced Sizing If no sizing class is added to the column, it will simply expand to fill the leftover space. We call this an *expand behavior*.

Watch this part in video

edit on codepen button
```html_example
4 columns
Whatever's left!
``` --- Multiple expanding columns will share the leftover space equally.

Watch this part in video

edit on codepen button
```html_example
4 columns
Whatever's left!
Whatever's left!
``` --- A column can also be made to *shrink*, by adding the `.shrink` class. This means it will only take up the horizontal space its contents need.

Watch this part in video

edit on codepen button
```html_example
Shrink!
Expand!
``` --- ## Responsive Adjustments Columns in a flex grid will not wrap if not given an explicit size—this is what allows the magical auto-sizing to work. To make columns stack on smaller screens, add the class `.small-12` manually. To switch back to the expand behavior from a percentage or shrink behavior, use the classes `.medium-expand` or `.large-expand`. In the below example, the columns stack on small screens, and become even-width on large screens.
edit on codepen button
```html_example
One
Two
Three
Four
Five
Six
``` --- ### Automatic Stacking We have a few shorthand classes for the above behavior. Use the `.[size]-unstack` classes to stack all columns in the row by default, and then unstack them on a larger screen size, making each one equal-width.
edit on codepen button
```html_example
One
Two
Three
Four
Five
Six
``` --- ## Column Alignment Columns in a flex grid can be aligned across the horizontal or vertical axis of their parent row. ### Horizontal Alignment Columns can be aligned the same way you would align text in a paragraph. By default, all columns align to the left (or the right in RTL), but this can be overridden with by adding the `.align-[dir]` class to the flex row.

Watch this part in video

edit on codepen button
```html
Aligned to
the left
Aligned to
the right
Aligned to
the middle
Aligned to
the edges
Aligned to
the space around
```
Aligned to
the left
Aligned to
the right
Aligned to
the middle
Aligned to
the edges
Aligned to
the space around
You might be wondering what the difference between `.align-justify` and `.align-spaced` is. A justified grid (`justify-content: space-between`) evenly distributes the space *between* each column. The first and last columns pin to the edge of the grid. A spaced grid (`justify-content: space-around`) evenly distributes the space *around* each column. This means there will always be space to the left of the first column, and to the right of the last column. The horizontal alignment classes are shorthands for the `justify-content` CSS property. [Learn more about `justify-content`](https://developer.mozilla.org/en-US/docs/Web/CSS/justify-content). --- ### Vertical Alignment By default, all columns in a flex grid stretch to be equal height. This behavior can be changed with another set of alignment classes. That's right, *middle alignment in CSS*! Your options for vertical alignment are `top`, `middle`, `bottom`, and `stretch`. Note that we use the word *middle* for vertical alignment, and *center* for horizontal alignment. Applying a vertical alignment class to the flex row will affect every column directly inside it.

Watch this part in video

edit on codepen button
```html_example
I'm in the middle!
I am as well, but I have so much text I take up more space! Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quis facere ducimus earum minus, inventore, ratione doloremque deserunt neque perspiciatis accusamus explicabo soluta, quod provident distinctio aliquam omnis? Labore, ullam possimus.
``` ```html_example
These columns align to the top.
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Voluptatum, tempora. Impedit eius officia possimus laudantium? Molestiae eaque, sapiente atque doloremque placeat! In sint, fugiat saepe sunt dolore tempore amet cupiditate.
``` --- ### Vertical Alignment of child columns (individually) Similar alignment classes can also be applied to individual columns, which use the format `.align-self-*` instead of `.align-*`. Watch this part in video

In Foundation 6.2, we introduced the .align-self-* classes, which replace the old method of using .align-* classes on columns. The old classes have been removed completely in Foundation 6.3.

edit on codepen button
```html_example
Align bottom
Align middle
Align top
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Non harum laborum cum voluptate vel, eius adipisci similique dignissimos nobis at excepturi incidunt fugit molestiae quaerat, consequuntur porro temporibus. Nisi, ex?
``` --- ## Collapse/Uncollapse Rows The `.collapse` class lets you remove column gutters (padding). There are times when you won't want each media query to be collapsed or uncollapsed. In this case, use the media query size you want and collapse or uncollapse and add that to your row element. Example shows no gutter at small media size and then adds the gutter to columns at medium. The `.is-collapse-child` class removes negative margins from nested row under collapsed parent.
edit on codepen button
```html
Removes gutter at small media query and adds at medium.
Removes gutter at small media query and adds at medium.
```

Scale the browser down to a medium size to see the difference.

On a small screen, I have gutters!

On a medium screen, I have gutters!

On a large screen, I have no gutters!

On a small screen, I have gutters!

On a medium screen, I have gutters!

On a large screen, I have no gutters!

--- ## Offsets Offsets work identically to the float grid, by applying `margin-left` to a column.
edit on codepen button
```html_example
Offset 2 on large
4 columns
``` --- ## Block Grids To define column widths at the row-level, instead of the individual column level, add the class `.[size]-up-[n]` to a row, where `[n]` is the number of columns to display per row, and `[size]` is the breakpoint at which to apply the effect. Watch this part in video

A block grid row has the property align-items: stretch by default, meaning the columns in each row are equal height. To change this, change the align-items property of the row, or use one of the vertical alignment flexbox classes.

edit on codepen button
```html_example
1 per row on small
2 per row on medium
3 per row on large
```