Blueprint Grid
The blueprint grid.
This file can be imported using:
@import "blueprint/grid"
View the Source for this module on Github.
Examples
- Two Column Layout
- A semantic two-column layout
Imports
The following sass files are automatically imported when you import this file:
Configurable Variables help
$blueprint-grid-columns
- Value
-
24 - Description
-
The number of columns in the grid.
$blueprint-grid-width
- Value
-
30px - Description
-
The width of a column
$blueprint-grid-margin
- Value
-
10px - Description
-
The amount of margin between columns
Constants
$blueprint-grid-outer-width
- Value
-
$blueprint_grid_width + $blueprint_grid_margin - Description
-
The width of a column including the margin. With default settings this is
40px.
$blueprint-container-size
- Value
-
$blueprint_grid_outer_width * $blueprint_grid_columns - $blueprint_grid_margin - Description
-
The width of the container. With default settings this is
950px.
Mixins
View Source: Sass | SCSSblueprint-grid
=blueprint-grid
// A container should group all your columns
.container
+container
.column, #{enumerate("div.span", 1, $blueprint_grid_columns)}
+column-base
// The last column in a row needs this class (or mixin) or it will end up on the next row.
.last, div.last
+last
// Use these classes (or mixins) to set the width of a column.
@for $n from 1 to $blueprint_grid_columns
.span-#{$n}
+span($n)
.span-#{$blueprint_grid_columns}, div.span-#{$blueprint_grid_columns}
+span($blueprint_grid_columns)
margin: 0
input, textarea, select
@for $n from 1 through $blueprint_grid_columns
&.span-#{$n}
+span($n, true)
// Add these to a column to append empty cols.
@for $n from 1 to $blueprint_grid_columns
.append-#{$n}
+append($n)
// Add these to a column to prepend empty cols.
@for $n from 1 to $blueprint_grid_columns
.prepend-#{$n}
+prepend($n)
// Use these classes on an element to push it into the
// next column, or to pull it into the previous column.
#{enumerate(".pull", 1, $blueprint_grid_columns)}
+pull-base
@for $n from 1 through $blueprint_grid_columns
.pull-#{$n}
+pull-margins($n)
#{enumerate(".push", 1, $blueprint_grid_columns)}
+push-base
@for $n from 1 through $blueprint_grid_columns
.push-#{$n}
+push-margins($n)
.prepend-top
+prepend-top
.append-bottom
+append-bottom
@mixin blueprint-grid { // A container should group all your columns .container { @include container; } .column, #{enumerate("div.span", 1, $blueprint_grid_columns)} { @include column-base; } // The last column in a row needs this class (or mixin) or it will end up on the next row. .last, div.last { @include last; } // Use these classes (or mixins) to set the width of a column. @for $n from 1 to $blueprint_grid_columns { .span-#{$n} { @include span($n); } } .span-#{$blueprint_grid_columns}, div.span-#{$blueprint_grid_columns} { @include span($blueprint_grid_columns); margin: 0; } input, textarea, select { @for $n from 1 through $blueprint_grid_columns { &.span-#{$n} { @include span($n, true); } } } // Add these to a column to append empty cols. @for $n from 1 to $blueprint_grid_columns { .append-#{$n} { @include append($n); } } // Add these to a column to prepend empty cols. @for $n from 1 to $blueprint_grid_columns { .prepend-#{$n} { @include prepend($n); } } // Use these classes on an element to push it into the // next column, or to pull it into the previous column. #{enumerate(".pull", 1, $blueprint_grid_columns)} { @include pull-base; } @for $n from 1 through $blueprint_grid_columns { .pull-#{$n} { @include pull-margins($n); } } #{enumerate(".push", 1, $blueprint_grid_columns)} { @include push-base; } @for $n from 1 through $blueprint_grid_columns { .push-#{$n} { @include push-margins($n); } } .prepend-top { @include prepend-top; } .append-bottom { @include append-bottom; } }
Generates presentational class names that you can use in your html to layout your pages.
Note:
Best practices discourage using this mixin, but it is provided to support legacy websites and to test the sass port against blueprint’s example pages.
container
=container
width: $blueprint_container_size
margin: 0 auto
+clearfix
@mixin container { width: $blueprint_container_size; margin: 0 auto; @include clearfix; }
A container for your columns.
Note:
If you use this mixin without the class and want to support ie6 you must set text-align left on your container element in an IE stylesheet.
last
=last
margin-right: 0
@mixin last { margin-right: 0; }
The last column in a row needs this mixin or it will end up on the next row in some browsers.
column($n, $last)
=column($n, $last: false)
+column-base($last)
+span($n)
@mixin column($n, $last: false) { @include column-base($last); @include span($n); }
Use this mixins to set the width of n columns.
span($n, $override)
=span($n, $override: false)
$width: $blueprint_grid_width * $n + $blueprint_grid_margin * ($n - 1)
@if $override
width: $width !important
@else
width: $width
@mixin span($n, $override: false) { $width: $blueprint_grid_width * $n + $blueprint_grid_margin * ($n - 1); @if $override { width: $width !important; } @else { width: $width; } }
Set only the width of an element to align it with the grid.
Most of the time you’ll want to use +column instead.
This mixin is especially useful for aligning tables to the grid.
column-base($last)
=column-base($last: false)
+float-left
@if $last
+last
@else
margin-right: $blueprint_grid_margin
* html &
overflow-x: hidden
@mixin column-base($last: false) { @include float-left; @if $last { @include last; } @else { margin-right: $blueprint_grid_margin; } * html & { overflow-x: hidden; } }
The basic set of styles needed to make an element behave like a column:
- floated to left
- gutter margin on the right (unless the last column)
- Some IE fixes
Note:
This mixin gets applied automatically when using +column
so you probably don’t need to use it directly unless
you need to deviate from the grid or are trying
to reduce the amount of generated CSS.
append($n)
=append($n)
padding-right: $blueprint_grid_outer_width * $n
@mixin append($n) { padding-right: $blueprint_grid_outer_width * $n; }
Mixin to a column to append n empty columns to the right by adding right padding to the column.
prepend($n)
=prepend($n)
padding-left: $blueprint_grid_outer_width * $n
@mixin prepend($n) { padding-left: $blueprint_grid_outer_width * $n; }
Mixin to a column to append n empty columns to the left by adding left padding to the column.
append-bottom($amount)
=append-bottom($amount: 1.5em)
margin-bottom: $amount
@mixin append-bottom($amount: 1.5em) { margin-bottom: $amount; }
Adds trailing margin.
prepend-top($amount)
=prepend-top($amount: 1.5em)
margin-top: $amount
@mixin prepend-top($amount: 1.5em) { margin-top: $amount; }
Adds leading margin.
pull-base
=pull-base
+float-left
position: relative
@mixin pull-base { @include float-left; position: relative; }
Base styles that make it possible to pull an element to the left.
Note:
This mixin gets applied automatically when using +pull
so you probably don’t need to use it directly unless
you need to deviate from the grid or are trying
to reduce the amount of generated CSS.
pull-margins($n, $last)
=pull-margins($n, $last: false)
@if $last
margin-left: -$blueprint_grid_outer_width * $n + $blueprint_grid_margin
@else
margin-left: -$blueprint_grid_outer_width * $n
@mixin pull-margins($n, $last: false) { @if $last { margin-left: -$blueprint_grid_outer_width * $n + $blueprint_grid_margin; } @else { margin-left: -$blueprint_grid_outer_width * $n; } }
The amount of pulling for element to the left.
Note:
This mixin gets applied automatically when using +pull
so you probably don’t need to use it directly unless
you need to deviate from the grid or are trying
to reduce the amount of generated CSS.
pull($n, $last)
=pull($n, $last: false)
+pull-base
+pull-margins($n, $last)
@mixin pull($n, $last: false) { @include pull-base; @include pull-margins($n, $last); }
Moves a column n columns to the left.
This mixin can also be used to change the display order of columns.
If pulling past the last (visually) element in a row,
pass true as the second argument so the calculations can adjust
accordingly.
For example:
HTML:
One Two
Sass:
#one
+column(18, true)
+prepend(6)
#two
+column(6)
+pull(18, true)
- Blueprint Pull Example
- Uses pull to change the display order of columns.
push-base
=push-base
+float-right
position: relative
@mixin push-base { @include float-right; position: relative; }
push-margins($n)
=push-margins($n)
margin: 0 -$blueprint_grid_outer_width * $n 1.5em $blueprint_grid_outer_width * $n
@mixin push-margins($n) { margin: 0 -$blueprint_grid_outer_width * $n 1.5em $blueprint_grid_outer_width * $n; }
push($n)
=push($n)
+push-base
+push-margins($n)
@mixin push($n) { @include push-base; @include push-margins($n); }
mixin to a column to push it n columns to the right
border($border_color, $border_width)
=border($border_color: #eeeeee, $border_width: 1px)
padding-right: $blueprint_grid_margin / 2 - $border_width
margin-right: $blueprint_grid_margin / 2
border-right: #{$border_width} solid #{$border_color}
@mixin border($border_color: #eeeeee, $border_width: 1px) { padding-right: $blueprint_grid_margin / 2 - $border_width; margin-right: $blueprint_grid_margin / 2; border-right: #{$border_width} solid #{$border_color}; }
Border on right hand side of a column.
colborder($border_color, $border_width)
=colborder($border_color: #eeeeee, $border_width: 1px)
padding-right: floor(($blueprint_grid_width + 2 * $blueprint_grid_margin - $border_width) / 2)
margin-right: ceil(($blueprint_grid_width + 2 * $blueprint_grid_margin - $border_width) / 2)
border-right: #{$border_width} solid #{$border_color}
@mixin colborder($border_color: #eeeeee, $border_width: 1px) { padding-right: floor(($blueprint_grid_width + 2 * $blueprint_grid_margin - $border_width) / 2); margin-right: ceil(($blueprint_grid_width + 2 * $blueprint_grid_margin - $border_width) / 2); border-right: #{$border_width} solid #{$border_color}; }
Border with more whitespace, spans one column.
colruler($border_color)
=colruler($border_color: #dddddd)
background: $border_color
color: $border_color
clear: both
float: none
width: 100%
height: 0.1em
margin: 0 0 1.45em
border: none
@mixin colruler($border_color: #dddddd) { background: $border_color; color: $border_color; clear: both; float: none; width: 100%; height: 0.1em; margin: 0 0 1.45em; border: none; }
Mixin this to an hr to make a horizontal ruler across a column.
colspacer
=colspacer
+colruler
background: white
color: white
visibility: hidden
@mixin colspacer { @include colruler; background: white; color: white; visibility: hidden; }
Mixin this to an hr to make a horizontal spacer across a column.