Created
February 25, 2019 15:07
-
-
Save mejiaj/1e53bbf618ecd036f7ad36d468d38205 to your computer and use it in GitHub Desktop.
Grid Generator SCSS
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Grid System | |
$grid-columns: 12 !default; | |
//** Padding between columns. Gets divided in half for the left and right. | |
$grid-gutter-width: 30px !default; | |
// Framework grid generation | |
// | |
// | |
// Used only by Bootstrap to generate the correct number of grid classes given | |
// any value of `$grid-columns`. | |
@mixin make-grid-columns($i: 1, $list: ".col-xs-#{$i}, .col-sm-#{$i}, .col-md-#{$i}, .col-lg-#{$i}") { | |
@for $i from (1 + 1) through $grid-columns { | |
$list: "#{$list}, .col-xs-#{$i}, .col-sm-#{$i}, .col-md-#{$i}, .col-lg-#{$i}"; | |
} | |
#{$list} { | |
position: relative; | |
// Prevent columns from collapsing when empty | |
min-height: 1px; | |
// Inner gutter via padding | |
padding-left: ceil(($grid-gutter-width / 2)); | |
padding-right: floor(($grid-gutter-width / 2)); | |
} | |
} | |
@mixin float-grid-columns($class, $i: 1, $list: ".col-#{$class}-#{$i}") { | |
@for $i from (1 + 1) through $grid-columns { | |
$list: "#{$list}, .col-#{$class}-#{$i}"; | |
} | |
#{$list} { | |
float: left; | |
} | |
} | |
@mixin calc-grid-column($index, $class, $type) { | |
@if ($type == width) and ($index > 0) { | |
.col-#{$class}-#{$index} { | |
width: percentage(($index / $grid-columns)); | |
} | |
} | |
@if ($type == push) and ($index > 0) { | |
.col-#{$class}-push-#{$index} { | |
left: percentage(($index / $grid-columns)); | |
} | |
} | |
@if ($type == push) and ($index == 0) { | |
.col-#{$class}-push-0 { | |
left: auto; | |
} | |
} | |
@if ($type == pull) and ($index > 0) { | |
.col-#{$class}-pull-#{$index} { | |
right: percentage(($index / $grid-columns)); | |
} | |
} | |
@if ($type == pull) and ($index == 0) { | |
.col-#{$class}-pull-0 { | |
right: auto; | |
} | |
} | |
@if ($type == offset) { | |
.col-#{$class}-offset-#{$index} { | |
margin-left: percentage(($index / $grid-columns)); | |
} | |
} | |
} | |
@mixin loop-grid-columns($columns, $class, $type) { | |
@for $i from 0 through $columns { | |
@include calc-grid-column($i, $class, $type); | |
} | |
} | |
// Create grid for specific class | |
@mixin make-grid($class) { | |
@include float-grid-columns($class); | |
@include loop-grid-columns($grid-columns, $class, width); | |
@include loop-grid-columns($grid-columns, $class, pull); | |
@include loop-grid-columns($grid-columns, $class, push); | |
@include loop-grid-columns($grid-columns, $class, offset); | |
} | |
/* ========================================================================== | |
$Grid | |
========================================================================== */ | |
@include make-grid-columns; | |
@include make-grid(xs); | |
@include bp(sm) { | |
@include make-grid(sm); | |
} | |
@include bp(md) { | |
@include make-grid(md); | |
} | |
@include bp(lg) { | |
@include make-grid(lg); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment