shelldandy / manila-mixins

A bunch of really cool Sass Mixins
https://shelldandy.github.io/manila-mixins/
MIT License
15 stars 0 forks source link

Flex grid #5

Closed shelldandy closed 6 years ago

shelldandy commented 6 years ago
@mixin flex-grid($gutter: $column-gutter, $total: $columns--total, $sizes: $breakpoints) {
  // First we create the row that will hold the columns
  .row {
    margin-left: $gutter / 2 * -1;
    margin-right: $gutter / 2 * -1;
    display: flex;
    flex-wrap: wrap;
    &.aic {
      align-items: center;
    }
    &.jcc {
      justify-content: center;
    }
    &.centered {
      align-items: center;
      justify-content: center;
    }
  }

  [class^='col-'] {
    padding-left: $gutter / 2;
    padding-right: $gutter / 2;
    max-width: 100%;
    flex-basis: 100%;
  }

  // We do a simple loop to output the bottom level columns
  @for $i from 1 through $columns--total {
    .col-#{$i} {
      max-width: percentage($i / $total);
      flex-basis: percentage($i / $total);
    }

    .col-offset-#{$i} {
      margin-left: percentage($i / $total);
    }
  }

  // Now we loop each sizes in the list of breakpoint-classes
  @each $name, $breakpoint in $sizes {
    @media (min-width: $breakpoint) {
      @for $i from 1 through $columns--total {
        .col-#{$name}-#{$i} {
          max-width: percentage($i / $total);
          flex-basis: percentage($i / $total);
        }

        .col-#{$name}-offset-#{$i} {
          margin-left: percentage($i / $total);
        }
      }
    }
  }
}