foundation
Version:
You may also want to checkout:
195 lines (151 loc) • 4.8 kB
text/stylus
//
// Grid Variables
//
$include-html-grid-classes ?= $include-html-classes;
$row-width ?= emCalc(1000px);
$column-gutter ?= emCalc(30px);
$total-columns ?= 12;
//
// Grid Function
//
gridCalc($colNumber, $totalColumns) {
return percent(($colNumber / $totalColumns * 100));
}
//
// Grid Mixins
//
// For creating container, nested, and collapsed rows.
grid-row($behavior = false) {
// use @include grid-row(nest); to include a nested row
if $behavior == nest {
width: auto;
margin-{$default-float}: -($column-gutter/2);
margin-{$opposite-direction}: -($column-gutter/2);
margin-top: 0;
margin-bottom: 0;
max-width: none;
} else if $behavior == collapse {
// use @include grid-row(collapse); to collapsed a container row margins
width: 100%;
margin: 0;
max-width: $row-width;
} else if $behavior == nest-collapse {
// use @include grid-row(nest-collapse); to collapse outer margins on a nested row
width: auto;
margin: 0;
max-width: none;
} else {
// use @include grid-row; to use a container row
width: 100%;
margin-{$default-float}: auto;
margin-{$opposite-direction}: auto;
margin-top: 0;
margin-bottom: 0;
max-width: $row-width;
}
// Clearfix for all rows
clearfix();
}
// For creating columns - @include these inside a media query to control small vs. large grid layouts
grid-column($columns=false, $last-column=false, $center=false, $offset=false, $push=false, $pull=false, $collapse=false, $float=true) {
position: relative;
// If collapsed, get rid of gutter padding
if $collapse {
padding-left: 0;
padding-right: 0;
} else if $collapse == false {
// Gutter padding whenever a column isn't set to collapse
padding-left: ($column-gutter / 2);
padding-right: ($column-gutter / 2);
}
// If a column number is given, calculate width
if $columns {
width: gridCalc($columns, $total-columns);
// If last column, float naturally instead of to the right
if $last-column {
float: $opposite-direction;
}
}
// If offset, calculate appropriate margins
if $offset { margin-{$default-float}: gridCalc($offset, $total-columns); }
// Source Ordering, adds left/right depending on which you use.
if $push {
{$default-float}: gridCalc($push, $total-columns);
{$opposite-direction}: auto;
}
if $pull {
{$opposite-direction}: gridCalc($pull, $total-columns);
{$default-float}: auto;
}
// If centered, get rid of float and add appropriate margins
if $center {
margin-{$default-float}: auto;
margin-{$opposite-direction}: auto;
float: none !important;
}
if $float {
if $float == left or $float == true {
float: $default-float;
} else if $float == right {
float: $opposite-direction;
} else {
float: none;
}
}
}
if $include-html-grid-classes != false {
/* Grid HTML Classes */
.row {
grid-row();
&.collapse {
.column,
.columns { grid-column($collapse:true); }
}
.row { grid-row($behavior:nest);
&.collapse { grid-row($behavior:nest-collapse); }
}
}
.column,
.columns { grid-column($columns:$total-columns); }
only screen {
.column,
.columns { grid-column($columns:false); }
for $i in (1..$total-columns) {
.small-{$i} { grid-column($columns:$i,$collapse:null,$float:false); }
}
for $i in (0..$total-columns - 2) {
.small-offset-{$i} { grid-column($offset:$i, $collapse:null,$float:false); }
}
[class*="column"] + [class*="column"]:last-child { float: $opposite-direction; }
[class*="column"] + [class*="column"].end { float: $default-float; }
.column.small-centered,
.columns.small-centered { grid-column($center:true, $collapse:null, $float:false); }
}
/* Styles for screens that are atleast 768px; */
$small {
for $i in (1..$total-columns) {
.large-{$i} { grid-column($columns:$i,$collapse:null,$float:false); }
}
for $i in (0..$total-columns - 1) {
.row .large-offset-{$i} { grid-column($offset:$i, $collapse:null,$float:false); }
}
for $i in (1..$total-columns - 1) {
.push-{$i} { grid-column($push:$i, $collapse:null, $float:false); }
.pull-{$i} { grid-column($pull:$i, $collapse:null, $float:false); }
}
.column.large-centered,
.columns.large-centered {
grid-column($center:true, $collapse:null, $float:false);
}
.column.large-uncentered,
.columns.large-uncentered, {
margin-{$default-float}: 0;
margin-{$opposite-direction}: 0;
float: $default-float !important;
}
.column.large-uncentered.opposite,
.columns.large-uncentered.opposite {
float: $opposite-direction !important;
}
}
}