Skip to content

Simple, fluid, nestable, flexible, Sass-based, responsive grid system.

Notifications You must be signed in to change notification settings

benchmarkstudios/simple-grid

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

49 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Just a simple grid

Based on existing grid systems, such as Twitter Bootstrap Grid System and csswizardry-grids, this is a fluid, flexible and responsive grid that can be scaled up to an arbitrary size, within the $max-width of your main .container. You also can easily and infinitly nest columns and rows, so you can build out complicated layouts without creating a lot of new custom elements. This is a grid system generated by Sass and it is based on BEM syntax.

Setup

The only thing you need to do to start building your grid is to adjust the number of $grid-columns, the desired $gutter and the main container $max-width.

How it works

Grid systems, as you may know, are used for creating page layouts through a series of rows and columns that will host your content:

  • Your .row element(s) must be placed within a .container, with a fixed $max-width for proper alignment. This elements will split up your page horizontally and will contain groups of .col.
  • Your content should be placed within the .col blocks, and only .col may be immediate children of .row.
  • You can nest .row and .col how many times you need, since you follow the previous standard.
  • Your .col width is defined by specifying the number of a single grid columns, in your total $grid-columns. For example, a .col--*-4 will represent a width of 4 columns in your $grid-columns total.
  • To control your responsive grid, there are available three class prefixes: .col--sm-* for small devices, .col-md-* for medium devices and .col--lg-* for large devices. All together, in your .col element, it will make your grid respond to each one of your default media queries.
  • Finaly, you have the option to move columns to the right using .col--*-offset-* classes. These classes increase the left margin of a column by the number of columns you want. For example, .col--*-offset-4 will push .col-*-4 over four columns.

Markup

Basic usage

Simple column set - <div class="col col--xs-12 col--sm-12 col--md-12 col--lg-12"></div> - inside a .row.

  <div class="row">
    <div class="col col--xs-12 col--sm-12 col--md-12 col--lg-12">
      <p>Col 1</p>
    </div>
  </div>
  <div class="row">
    <div class="col col--xs-12 col--sm-12 col--md-6 col--lg-6">
      <p>Col 2</p>
    </div>
    <div class="col col--xs-12 col--sm-12 col--md-6 col--lg-6">
      <p>Col 3</p>
    </div>
  </div>
  <div class="row">
    <div class="col col--xs-12 col--sm-12 col--md-4 col--lg-4">
      <p>Col 4</p>
    </div>
    <div class="col col--xs-12 col--sm-12 col--md-4 col--lg-4">
      <p>Col 5</p>
    </div>
    <div class="col col--xs-12 col--sm-12 col--md-4 col--lg-4">
      <p>Col 6</p>
    </div>
  </div>
  <div class="row">
    <div class="col col--xs-12 col--sm-12 col--md-8 col--lg-8">
      <p>Col 7</p>
    </div>
    <div class="col col--xs-12 col--sm-12 col--md-4 col--lg-4">
      <p>Col 8</p>
    </div>
  </div>

Offsetting columns

Increase the left margin of a column by the number of columns you want, along with the responsive class prefixes, if you need.

  <div class="row">
    <div class="col col--xs-12 col--sm-12 col--md-4 col--lg-4">
      <p>Col 9 with offset 0</p>
    </div>
    <div class="col col--xs-12 col--sm-12 col--md-4 col--lg-4 col--xs-offset-4 col--sm-offset-0 col--md-offset-4 col--lg-offset-4">
      <p>Col 10 with offset 4</p>
    </div>
  </div>
  <div class="row">
    <div class="col col--xs-12 col--sm-12 col--md-3 col--lg-3 col--xs-offset-0 col--sm-offset-0 col--md-offset-3 col--lg-offset-3">
      <p>Col 11 with offset 3</p>
    </div>
    <div class="col col--xs-12 col--sm-12 col--md-3 col--lg-3 col--xs-offset-0 col--sm-offset-0 col--md-offset-6 col--lg-offset-6">
      <p>Col 12 with offset 6</p>
    </div>
  </div>
  <div class="row">
    <div class="col col--xs-12 col--sm-12 col--md-6 col--lg-6 col--xs-offset-0 col--sm-offset-0 col--md-offset-3 col--lg-offset-3">
      <p>Col 13 with offset 3</p>
    </div>
  </div>

Nesting columns

To nest your content, add a new .row inside a .col, and set of .col-ld-* columns within an existing .col-ld-* column. Nested rows should include a set of columns that add up to 12 or less.

  <div class="row">
    <div class="col col--xs-12 col--sm-12 col--md-12 col--lg-12">
      <p>Col 14</p>
      <div class="row">
        <div class="col col--xs-12 col--sm-12 col--md-6 col--lg-6">
          <p>Nested col 14.1</p>
        </div>
        <div class="col col--xs-12 col--sm-12 col--md-6 col--lg-6">
          <p>Nested col 14.2</p>
        </div>
      </div>
    </div>
  </div>

Gutterless columns

To remove all the gutters from your columns just add the class .row--gutterless to your .row element.

  <div class="row row--gutterless">
    <div class="col col--xs-12 col--sm-12 col--md-6 col--lg-6">
      <p>Col 15</p>
    </div>
    <div class="col col--xs-12 col--sm-12 col--md-6 col--lg-6">
      <p>Col 16</p>
    </div>
  </div>

Demo

Check out the demo and play around on Code Pen and/or check the compiled CSS on SassMeister.

About

Simple, fluid, nestable, flexible, Sass-based, responsive grid system.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages