Skip to content

Instantly share code, notes, and snippets.

@alexcabrera
Created October 7, 2011 16:06
Show Gist options
  • Select an option

  • Save alexcabrera/1270671 to your computer and use it in GitHub Desktop.

Select an option

Save alexcabrera/1270671 to your computer and use it in GitHub Desktop.
Simple responsive grid mixins in indented sass (boiled down from Susy)
// settings
$std-n-cols: 12
$std-col-width: 54
$std-gutter-width: 30
// calculated constants
$std-page-width: ($std-n-cols * $std-col-width) + (($std-n-cols - 1) * $std-gutter-width)
@function column-width($n-cols, $col-width:$std-col-width, $gutter-width:$std-col-gutter)
$column-widths: $n-cols * $col-width
$gutter-widths: ($n-cols - 1) * $gutter-width
@return $column-widths + $gutter-widths
@function percent-width($target, $context)
@return ($target / $context) * 100%
@mixin column($n-cols, $context:$std-n-cols, $col-width:$std-col-width, $gutter-width:$std-gutter-width, $last:'false')
float: left
width: percent-width(column-width($n-cols, $col-width, $gutter-width), column-width($context, $col-width, $gutter-width))
@if $last == 'true'
margin-right: 0
@else
margin-right: percent-width($gutter-width, column-width($context, $col-width, $gutter-width))
@mixin prepend($n-cols, $context:$std-n-cols, $col-width:$std-col-width, $gutter-width:$std-gutter-width)
padding-left: percent-width(column-width($n-cols, $col-width, $gutter-width), column-width($context, $col-width, $gutter-width))
@mixin append($n-cols, $context:$std-n-cols, $col-width:$std-col-width, $gutter-width:$std-gutter-width)
padding-right: percent-width(column-width($n-cols, $col-width, $gutter-width), column-width($context, $col-width, $gutter-width))
@mixin push($n-cols, $context:$std-n-cols, $col-width:$std-col-width, $gutter-width:$std-gutter-width)
margin-left: percent-width(column-width($n-cols, $col-width, $gutter-width), column-width($context, $col-width, $gutter-width))
@mixin pull($n-cols, $context:$std-n-cols, $col-width:$std-col-width, $gutter-width:$std-gutter-width)
margin-left: -1 * percent-width(column-width($n-cols, $col-width, $gutter-width), column-width($context, $col-width, $gutter-width))
@alexcabrera

Copy link
Copy Markdown
Author

Usage:

Make an element span 8 columns, given a context of 12 columns, prepend 1 column, append 1 column

#element
    @include column(8, 12, $last: 'true')
    @include prepend(1, 12)
    @include append(1, 12)

@alexcabrera

Copy link
Copy Markdown
Author

Simple 3 column layout:

<div id="#lcol">&nbsp;</div>
<div id="#main">&nbsp;</div>
<div id="#rcol">&nbsp;</div>

And the SASS

#lcol
    @include column(3, 12)

#main
    @include column(6, 12)

#rcol
    @include column(3, 12, $last: 'true')

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