From fa07c03d6499cfb62b4a56365c3157fd0ed85e56 Mon Sep 17 00:00:00 2001 From: Nicolas Coden Date: Sat, 31 Mar 2018 23:32:20 +0200 Subject: [PATCH] refactor: add "default" position to `grid-column-positioning` to handle float position Handle all the float positioning of Float Grid in the same mixin. This also makes the "last column" selector used only in this mixin. --- scss/grid/_column.scss | 8 ++------ scss/grid/_position.scss | 36 ++++++++++++++++++++++++++---------- 2 files changed, 28 insertions(+), 16 deletions(-) diff --git a/scss/grid/_column.scss b/scss/grid/_column.scss index 615e6fd2d..cddf6e494 100644 --- a/scss/grid/_column.scss +++ b/scss/grid/_column.scss @@ -63,12 +63,8 @@ // Gutters @include grid-column-gutter($gutters: $gutters); - // Last column alignment - @if $grid-column-align-edge { - &:last-child:not(:first-child) { - float: $global-right; - } - } + // Position + @include grid-col-pos(auto); } /// Creates a grid column row. This is the equivalent of adding `.row` and `.column` to the same element. diff --git a/scss/grid/_position.scss b/scss/grid/_position.scss index ec6ef7d7e..945596502 100644 --- a/scss/grid/_position.scss +++ b/scss/grid/_position.scss @@ -8,14 +8,35 @@ /// Reposition a column. /// -/// @param {Number|Keyword} $position - Direction and amount to move. The column will move equal to the width of the column count specified. A positive number will push the column to the right, while a negative number will pull it to the left. Set to center to center the column. +/// @param {Number|Keyword} $position - It can be: +/// * A number: The column will move equal to the width of the column count +/// specified. A positive number will push the column to the right, while +/// a negative number will pull it to the left. +/// * `center`: Column will be centered +/// * `auto`: Column will be pushed to the left (or to the right for the last column). @mixin grid-column-position($position) { - @if type-of($position) == 'number' { + // Auto positioning + @if $position == auto { + float: $global-left; + clear: none; + + // Last column alignment + @if $grid-column-align-edge { + &:last-child:not(:first-child) { + float: $global-right; + } + } + } + + // Push/pull + @else if type-of($position) == 'number' { $offset: percentage($position / $grid-column-count); position: relative; #{$global-left}: $offset; } + + // Center positioning @else if $position == center { &, &:last-child:not(:first-child) { float: none; @@ -24,23 +45,18 @@ margin-right: auto; margin-left: auto; } + @else { - @warn 'Wrong syntax for grid-column-position(). Enter a positive or negative number, or center.'; + @warn 'Wrong syntax for grid-column-position(). Enter a positive or negative number, "center" or "auto".'; } } /// Reset a position definition. @mixin grid-column-unposition { + @include grid-column-position(auto); position: static; margin-right: 0; margin-left: 0; - - float: $global-left; - @if $grid-column-align-edge { - &:last-child:not(:first-child) { - float: $global-right; - } - } } /// Offsets a column to the right by `$n` columns. -- 2.47.2