Skip to content

Instantly share code, notes, and snippets.

Last active January 21, 2021 17:03
  • Star 32 You must be signed in to star a gist
  • Fork 12 You must be signed in to fork a gist
Star You must be signed in to star a gist
What would you like to do?
Foundation 5 style Block-Grid for Bootstrap 3 (SASS Version)
// Block Grid
// Technique adapted from Foundation 5 for Bootstrap 3.
// Original LESS Version by Christopher Mitchell (
// Converted to SCSS by Rasmus Jürs (
[class*="block-grid-"] {
display: block;
margin: -($grid-gutter-width/2);
padding: 0;
@include clearfix();
.block-grid-item {
display: inline;
margin: 0;
padding: ($grid-gutter-width/2);
height: auto;
float: left;
list-style: none;
@mixin block-grid ($per-row) {
& > .block-grid-item {
width: (100%/$per-row);
$nth-equation: #{$per-row}n+'+'+1;
&:nth-of-type(n) { clear: none; }
&:nth-of-type(#{$nth-equation}) { clear: both; }
@mixin block-grids($size) {
.block-grid-#{$size}-1 { @include block-grid(1); }
.block-grid-#{$size}-2 { @include block-grid(2); }
.block-grid-#{$size}-3 { @include block-grid(3); }
.block-grid-#{$size}-4 { @include block-grid(4); }
.block-grid-#{$size}-5 { @include block-grid(5); }
.block-grid-#{$size}-6 { @include block-grid(6); }
.block-grid-#{$size}-7 { @include block-grid(7); }
.block-grid-#{$size}-8 { @include block-grid(8); }
.block-grid-#{$size}-9 { @include block-grid(9); }
.block-grid-#{$size}-10 { @include block-grid(10); }
.block-grid-#{$size}-11 { @include block-grid(11); }
.block-grid-#{$size}-12 { @include block-grid(12); }
@include block-grids(xs);
@media (min-width: $screen-sm-min) { @include block-grids(sm) }
@media (min-width: $screen-md-min) { @include block-grids(md) }
@media (min-width: $screen-lg-min) { @include block-grids(lg) }
Copy link


Thanks, this has been updated.

Copy link

Would it be too much trouble to post an example usage here? Tried it out and there were a few kinks. I want to make sure I'm actually using it right.

Copy link

heres an example:

<div class="container">

  <div class="block-grid-lg-4 block-grid-md-3 block-grid-sm-2 block-grid-xs-1">
    <img class="block-grid-item" src="...">
    <img class="block-grid-item" src="...">
    <img class="block-grid-item" src="...">
    <img class="block-grid-item" src="...">
    <img class="block-grid-item" src="...">
    <img class="block-grid-item" src="...">

Copy link

good stuff, thanks for this

Copy link

juukie commented Mar 4, 2015

To support > 12 columns, I use this instead of the block-grids mixin:

@mixin block-grids($size, $columns: $grid-columns) {
  @for $i from 1 through $columns {
      @include block-grid($i)

In sass:

=block-grids($size, $columns: $grid-columns)
  @for $i from 1 through $columns

Copy link

Does not seem to be working - using bootstrap 3.3.5

Image of Yaktocat

Markup output
Image of Yaktocat

CSS compiled
Image of Yaktocat

Copy link

djmtype commented Jul 30, 2015

It doesn't seem to work like it once did. Returning an error: error parsing interpolated value. Using Bootstrap 3.3.5 with Sass 3.4.14.

Copy link

Is this no longer working with the current version of Bootstrap?

Copy link

realart commented Sep 5, 2015

When I had a DIV with pagination below block grid container, and I used "text-center" text align class, my pagination links sometimes aligned too much to the right and not in center.

This was because the negative margin of last row block grid items somehow collapsed into the pagination div and affected text align calculation. Despite the fact that block grid container has "clearfix".

To get rid of this problem, I had to wrap blockgrid into another div and give it clearfix class as well.

Copy link

This was not working with the current version of bootstrap and seemed to be a similar error read here:

wrapping the $nth-equation in parentheses seemed to fix the issue for me:
$nth-equation: (#{$per-row}n) + '+' +1;

Copy link

Copy link

jpcmf commented Dec 14, 2015

Stylus Version

    display: block
    margin: -($grid-gutter-width / 2)
    padding: 0

    display: inline
    margin: 0
    padding: ($grid-gutter-width / 2)
    height: auto
    float: left
    list-style: none

    & > .block-grid-item
        width: (100% / $per-row)

        $nth-equation : (#{$per-row}n) + "+" + 1
            clear: none
            clear: both


@media (min-width: $screen-sm-min)
@media (min-width: $screen-md-min)
@media (min-width: $screen-lg-min)

Copy link

Libsass will not compile the CSS correctly.

Use $nth-equation : (#{$per-row}n) + '+' + 1 instead of $nth-equation: #{$per-row}n+'+'+1; as mheywood90 pointed out.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment